0

CommandBuilder について知ったばかりで、単純明快で使いやすいと思いました。明らかに、私はまだ物事を見逃しています。Customers という名前の dbSet テーブルを正常に更新する DataGridView があります。ただし、実際のデータベース ファイルには更新されません。

...
Dim ConMain As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\dummy_data.accdb")
...
Private Sub CustomerDataGridView_RowValidated(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
    Handles CustomerDataGridView.RowValidated

    Me.CustomersTableAdapter.Update(Me.Dummy_dataDataSet.Customers)
    Dim CustomerAdapter As New OleDbDataAdapter("Select * From Customers", ConMain)
    Dim ObjComander As New OleDbCommandBuilder(CustomerAdapter)
    CustomerAdapter.Update(Dummy_dataDataSet, "Customers")

End Sub

エラーはスローされず、行った変更はメモリに保持されます (フォームを開いたり閉じたりしても変更は残ります) が、実際には DB に書き込まれません。私は何が欠けていますか?

4

1 に答える 1

0

これを試して

Dim ConMain As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\dummy_data.accdb")
Dim m_DtCustomer As New DataTable
Dim CustomerAdapter As OleDbDataAdapter
Dim m_Bsource As New BindingSource

'Populate the datagridview

Sub FillDataGrid()

    CustomerAdapter = New OleDbDataAdapter("Select * From Customers", ConMain)
    m_DtCustomer.Clear()
    CustomerAdapter.Fill(m_DtCustomer)
    m_Bs.DataSource = m_DtCustomer
    CustomerDataGridView.Datasource = m_Bs
End Sub

'Update changes to the database

Sub UpdateDatabase()

    Dim ObjComander As New OleDbCommandBuilder(CustomerAdapter)
    CustomerAdapter.Update(m_DtCustomer)

End Sub

Private Sub CustomerDataGridView_RowValidated(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles CustomerDataGridView.RowValidated

    Call Me.UpdateDatabase()

End Sub
于 2013-03-19T09:24:06.447 に答える