2014-02-24 2 views
0
난 내 데이터베이스 문제를 지금까지 일한지

을에, 나는 DataGridView를업데이트 명령 DataGridView에있는 데이터베이스

할 수있는 사람이 검사를 통해 내 데이터베이스를 업데이트 할 수없는 이유에 대한 새로운 모듈을 진행할 수 없습니다 내 코드에 왜 버튼 클릭을 사용하여 datagridview 내 데이터베이스를 업데이트 할 수없는 이유는 무엇입니까? 여기

내가 내 데이터 그리드에 내용이 방법은 다음과 같습니다

Public Sub loaddgvfrm3() 
    cmdconn = New SqlConnection 
    cmd = New SqlCommand 
    cmdconn.ConnectionString = sqlstr 
    cmdconn.Open() 
    cmd.Connection = cmdconn 
    cmd.CommandText = "select period, VOUCH_AMT, INDIVIDUAL_AMT, check_no, D_MAILED, DIR_NO, who_updated, claim_no, year_student from tobee.EBD_BILLHISTORY where CLAIM_NO like '" + txtClaimno.Text + "'" 
    'cmd.CommandText = "select a.period, a.VOUCH_AMT, a.INDIVIDUAL_AMT, a.check_no, a.bal_ent, a.D_MAILED, a.DIR_NO from tobee.EBD_BILLHISTORY a left join carlos.claims_waivee b on a.CLAIM_NO = b.claim_no where b.CLAIM_NO like '" + claimno.ToString + "'" 
    Dim dt As New DataTable 
    'Dim ds As New DataSet 
    da = New SqlDataAdapter 
    da.SelectCommand = cmd 
    da.Fill(dt) 
    Me.DataGridView1.DataSource = dt 
    Me.DataGridView2.DataSource = dt 
    cmdconn.Close() 
End Sub 

지금 내가이 buttonclick 여기

으로 데이터베이스로 만들어 그 DataGridView를 업데이트 변경 내 일부 행을 수정할 내 버튼 클릭 코드입니다 :

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 


    Dim connstr As String = "server=midtelephone\sqlexpress; database=testdb; user= sa; password=sa;" 
    Dim cmd2 As New SqlCommand 

    Try 
     Using connection As New SqlConnection(connstr) 
      connection.Open() 
      cmd2.CommandText = "update tobee.EBD_BILLHISTORY set [email protected], [email protected]_amt, [email protected]_amt, [email protected]_no, [email protected]_mailed, [email protected]_no, [email protected]_updated where claim_no = '" + txtClaimno.Text + "' " 

      cmd2.Parameters.Add("@period", SqlDbType.Char, 25, "period") 
      cmd2.Parameters.Add(New SqlParameter("@vouch_amt", SqlDbType.Decimal) With {.Precision = 18, .Scale = 2}).Value = "vouch_amt" 
      cmd.Parameters.Add(New SqlParameter("@individual_amt", SqlDbType.Decimal) With {.Precision = 18, .Scale = 2}).Value = "individual_amt" 

      cmd2.Parameters.Add("@check_no", SqlDbType.Char, 15, "check_no") 
      'cmd2.Parameters.Add("@d_mailed", SqlDbType.DateTime, "d_mailed") 
      cmd2.Parameters.Add("@dir_no", SqlDbType.Char, 15, "DIR_NO") 
      cmd2.Parameters.Add("@who_updated", SqlDbType.Char, 15, "who_updated") 
      cmd2.ExecuteNonQuery() 
      connection.Close() 
      MsgBox("changes done") 
      'MessageBox.Show("Updated Successfully!", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information) 

     End Using 
    Catch ex As Exception 
    msgbox(ex.message) 
    End Try 

End Sub 

발생하는 문제 : 는 프로가 될 수있는 것을 "ExecuteNonQuery는 연결 속성이 초기화되지 않았습니다" mybutton의 흠집을 저장하지? (내가 제대로 일을 메신저 모르겠다, 나는이 두 개의 "잠수함"correcty 연결합니까?) 만약 당신이 (업데이 트) datagridview pls에서 만든 변경 사항에 대한 다른 제안이있다. 저장 버튼을 자유롭게 수정할 :(

+0

'Catch' 블록에 중단 점을 넣고 디버그 모드로 애플리케이션을 실행하십시오. 그것이'Catch'로 간다면'ex'를 파헤쳐서 예외를 일으키는 것에 대한 많은 정보를 얻으십시오. 아니면 최소한,'Catch' 블록에'MessageBox.Show ("Something")'을 넣어 예외가 발생할 때마다 알리도록하십시오. – har07

+0

나는 그것을 업데이트했습니다. executenonquery : 연결 속성이 초기화되지 않았습니다. 그게 오류 야. 내 savebtn 하위 어떻게 든 loaddgvfrm에 연결되어 있습니까? : ( –

+0

오류 메시지를 기반으로, 그것은 당신이 한 줄을 놓친 것 같다. 내 대답을 확인 :)^2 질문에 대해 : 아니. sub 내부에 선언 된 모든 변수를 감안할 때 두 subs는 어쨌든 연결되어 있지 않습니다 – har07

답변

1

당신이 cmd2Connection 속성을 설정하는 것을 잊었다 것으로 보인다 간단히 connection.Open() 후이 행을 추가합니다.

cmd2.Connection = connection 

UPDATE :

당신이 시도 할 수 DataAdapterUpdate() 함수를 사용하여 DataTable에서 데이터베이스로 변경 내용을 커밋하는 데 DataTable을 전달합니다.

da.Update(dt); 

[MSDN Reference]

+0

그 전에 어떻게 든했는데, loaddgv sub와 btnsave sub를 연결하는 방법에 대한 해결책을 찾을 수 없습니다. 바로 지금 찾으려고하는 메신저입니다. –

+0

만약 당신이 무엇을 의미하는지 이해한다면, * loaddgv sub와 btnsave sub를 올바로 연결하는 것입니다. 위의 업데이트는 DGV의 데이터 소스 인 DataTable의 변경 사항을 데이터베이스에 다시 제출할 수 있음을 의미합니다. inside btnsave sub이고'dt'가 전역 변수 (sub 외부에서 선언 된 변수)이면 두 하위가 모두 * 연결된 * (DataTable의 동일한 인스턴스에 대해 작동 함)입니다. – har07

+0

수정 된 행이있는 DataRow 컬렉션을 전달할 때 유효한 UpdateCommand가 필요합니다. 새 오류 –

관련 문제