2014-01-23 4 views
1

SQL에서 그리드보기로 데이터를 채우려고합니다. 단추를 클릭하고 그리드보기에서 데이터를 채울 때 사용자 액세스 권한이 부여되었습니다. 하지만 이미 열려있는 데이터 판독기가이 명령과 관련된 첫 번째 닫혀 있어야합니다 오류가 발생합니다. 연결 문자열에서SQL에서 그리드보기로 데이터 채우기

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Try 
      If ComboBox2.Text = "-----select-----" Then 
       MsgBox("Please Select Region and Site ID", MsgBoxStyle.Critical, "failure") 
      Else 
       Button3.Show() 
       Button4.Show() 
       Button5.Show() 
       connection_open() 
       qry = "select * from LOG_ACCESS where ID='" & UCase(Environ$("Username")) & "' " 
       cmd1 = New SqlCommand(qry, cnn) 
       dr = cmd1.ExecuteReader 
       If dr.Read = True Then 
        MsgBox("login successful", MsgBoxStyle.Information, "login") 
        qry1 = "select * from SITE_DETAILS where Region = '" + ComboBox1.SelectedItem.ToString + "' And Site_ID = '" + ComboBox2.SelectedItem.ToString + "'" 
        adp = New SqlDataAdapter(qry1, cnn) 
        dr.Close() 
        adp.Fill(ds, "SITE_DETAILS") 
        'dr.Close() 
        DataGridView1.DataSource = ds 
        DataGridView1.DataMember = ds.Tables(0).ToString 
        DataGridView1.Hide() 
        'Me.Hide() 
        'dr.Close() 
        connection_close() 

       Else 
        MsgBox("Please Contact Administrator", MsgBoxStyle.Critical, "failure") 
        dr.Close() 
        connection_close() 
       End If 
      End If 
      dr.Close() 
      connection_close() 
     Catch ex As SqlException 
      MsgBox(ex.Message, MsgBoxStyle.Critical, "SqlError") 
     Catch ex As Exception 
      MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End Try 
    End Sub 

답변

0

는 화성 = "true"를

대신 문제가 아닌 open_connection 방법에 무슨 일이 일어나고 있는지 경우 궁금 dr = cmd1.ExecuteReader

dr = comm.ExecuteReader(CommandBehavior.CloseConnection) 
+0

안녕하세요, 아직도 내가 같은 오류가 점점 오전 :

다음은 도움이 될 수있는 링크입니다. – user2642374

+0

답장을 보내 주셔서 감사합니다. 나는 당신의 충고에 따라 노력했다. 하지만 여전히 같은 오류가 발생합니다. – user2642374

0

의이 시도 설정합니다.

일반적으로 데이터 격자가 채워진 것을 볼 때 using 문을 사용하는 컨텍스트에있는 것입니다. (SQL SQLConnection 사용 ...)이 방법을 시도해 봤습니까?

이 방법은 사용 범위의 중괄호로만 열려 있으며, 블록이 완료되면 자동으로 삭제되므로 if 논리에 모두 닫을 필요가 없습니다. http://www.canofcode.co.uk/software/c-sharp-using-statement/