2015-07-21 53 views
0

我正在使用datagridview來顯示錶格數據並更改特定單元格的值。根據需要,我可能需要將這些值更改爲多行。VB.Net影響對錶格的更改

我想使用datagridview1.CellValueChanged來填充數據集(即創建所做的更改的集合),然後通過單擊命令按鈕保存更改。

我的問題是,儘管對於每次更改,只有最後一次更改被保存才被調用。我正在考慮使用數據集來存儲更改值的多個記錄,然後保存數據庫表中數據集中的所有行(使用更新)。

難道有一些解決方案來解決我的困境。

PS。在嘗試這個(ADO.net數據集)之前,我正在更新一個臨時表,然後使用它來更新數據庫。

感謝您的解決方案。

代碼:::
私人小組dGridVwCreaCode_CellValueChanged(BYVAL發件人爲對象,BYVALË作爲System.Windows.Forms.DataGridViewCellEventArgs)把手dGridVwCreaCode.CellValueChanged

Dim qryStr_CodeShtText_Changed As String 
    Dim var_CodeID_Changed As Long 

    var_CodeID_Changed = dGridVwCreaCode(e.ColumnIndex - 2, e.RowIndex).Value 


    qryStr_CodeShtText_Changed = "SELECT Code_ID, Code, Code_Descrip FROM Code_SAP " & _ 
     "WHERE (Code_SAP.Code_ID = " & var_CodeID_Changed & ")" 

    var_CodeShtText_Changed = dGridVwCreaCode(e.ColumnIndex, e.RowIndex).Value.ToString 

    If Not CatGenieConnPublic.State = ConnectionState.Open Then 
     CatGenieConnPublic.Open() 
    End If 
    da_CodeShtText_Changed = New OleDb.OleDbDataAdapter(qryStr_CodeShtText_Changed, CatGenieConnPublic) 
    da_CodeShtText_Changed.Fill(ds_CodeShtText_Changed, "Code_SAP") 
    cb_CodeShtText_changed = New OleDb.OleDbCommandBuilder(da_CodeShtText_Changed)  

ds_CodeShtText_Changed.Tables( 「Code_SAP」)。行(1).Item( 「Code_Descrip」)= var_CodeShtText_Changed

要保存(從Button_Click被稱爲以下子)的變化: 私人小組Save_Changed_CodeShtText() da_CodeShtText_Changed.Update (ds_CodeShtText_Changed, 「Code_SAP」) MSGBOX( 「保存到數據庫的變化......」,vbOKOnly + vbInformation)

If CatGenieConnPublic.State = ConnectionState.Open Then 
     CatGenieConnPublic.Close() 
    End If 
    'SET BOOLEAN TO FALSE AS CHANGED VALUES HAVE BEEN SAVED 
    bool_CellVal_HasChanged = False 
End Sub 

PS。不知何故,我無法將所有的代碼行放在一起,請原諒我。

+0

你可以發佈你的代碼嗎? – Saragis

回答

0

什麼,我就被遞增 「行」 錯過計數的代碼行:

ds_CodeShtText_Changed.Tables( 「Code_SAP」)行(rowNum_Increment - 1).Item( 「Code_Descrip」)= var_CodeShtText_Changed。

因此,每當用戶更改特定單元格中的數據時,行數以「1」遞增並收集到數據集中。

相關問題