VB.Net影响表

时间:2015-07-21 09:57:23

标签: vb.net datagridview dataset

我正在使用datagridview来显示表数据和更改特定单元格的值。根据要求,我可能需要为多行更改此类值。

我正在尝试使用datagridview1.CellValueChanged来填充数据集(即创建所做更改的集合),然后通过单击命令按钮保存更改。

我的问题是,虽然每次更改都会调用sub,但只保存最后一次更改。我在考虑使用数据集来存储更改值的多个记录,然后在数据库表中保存数据集中的所有行(使用Update)。

能否解决我的困境?

PS。在尝试这个(ADO.net数据集)之前,我正在更新一个临时表,然后使用它来更新数据库。

请感谢解决方案。

代码:::
Private Sub dGridVwCreaCode_CellValueChanged(ByVal sender As Object,ByVal e As 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”)。Rows(1).Item(“Code_Descrip”)= var_CodeShtText_Changed

保存更改(从Button_Click调用sub后):     Private Sub 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。不知何故,我无法将所有代码行放在一起,请原谅我。

1 个答案:

答案 0 :(得分:0)

我错过的是增加代码行中的“行”计数:

ds_CodeShtText_Changed.Tables(“Code_SAP”)。行(rowNum_Increment - 1).Item(“Code_Descrip”)= var_CodeShtText_Changed

因此,每当用户更改特定单元格中的数据时,行号将以“1”递增并收集在数据集中。