2014-02-24 130 views
0

我已經與我的數據庫問題,到目前爲止的工作,我不能爲我無法通過datagridview的更新命令中的datagridview數據庫

有人可以檢查更新我的數據庫的原因一個新的模塊進行在我的代碼爲什麼我不能更新我的數據庫在datagridview使用按鈕單擊?

這裏就是我有我的DataGrid內容:

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:連接屬性尚未初始化」 可能是什麼職業如果你有任何其他建議(更新)我在datagridview pls中所做的更改,我會不會知道mybutton保存的缺陷?(我不知道我是否正確地執行操作,是否將這兩個「subs」正確連接?)。隨意修改保存按鈕:(

+0

將斷點放入'Catch'塊中,在調試模式下運行您的應用程序。如果它轉到'Catch',深入'ex'以獲取有關導致異常的信息。或者至少,在'Catch'塊中放置'MessageBox.Show(「Something」)',以便在發生異常時得到通知。 – har07

+0

我得到了更新。 executenonquery:連接屬性尚未初始化。那是錯誤。我的savebtn子是以某種方式連接到loaddgvfrm? :( –

+0

基於錯誤消息,似乎你錯過了單行。檢查我的答案:)關於第二個問題:不。鑑於所有在sub中聲明的變量,兩個subs都沒有連接在任何地方 – har07

回答

1

看來你忘了設置的cmd2Connection屬性只是connection.Open()後添加此行:

cmd2.Connection = connection 

UPDATE:

你可以試試使用DataAdapterUpdate()函數傳遞DataTable作爲參數,以將更改從DataTable提交到數據庫:

da.Update(dt); 

[MSDN Reference]

+0

我做過之前,但不知何故,我無法找到任何解決方案,如何鏈接loaddgv子和btnsave子。這就是我現在試圖找到的。 –

+0

如果我明白你的意思*正確地鏈接* loaddgv sub和btnsave sub。我上面的更新意味着,您可以將DataTable(這是您的DGV的數據源)中的更改提交回數據庫,將該行代碼內部的btnsave子,並且給定'dt'是全局變量(在子外部聲明),那麼兩個子*現在*鏈接*(針對同一個DataTable實例操作)。 – har07

+0

使用修改的行傳遞DataRow集合時,Update需要有效的UpdateCommand。那是新的錯誤 –