0

呼び出し先に変更を加えてDataGridView呼び出し先DataGridView_Manage_Calculationsをクリックした後、Access データベースを更新する必要があります。ButtonButton_Update

これが私がこれまでに持っているコードです:

Dim dtManage As New DataTable
Dim ManageAdapter As OleDbDataAdapter
Dim Bsource As New BindingSource

Public Sub Show_Panel_Manage_Calculations()
    Panel_Manage_Calculations.Show()

    ManageAdapter = New OleDbDataAdapter("Select Calculation, [Interval], Formula From " & tblName & "", con)
    dtManage.Clear()
    ManageAdapter.Fill(dtManage)
    Bsource.DataSource = dtManage
    DataGridView_Manage_Calculations.DataSource = Bsource

End Sub

Private Sub Button_Update_Click(sender As Object, e As EventArgs) Handles Button_Update.Click
    Dim ObjComander As New OleDbCommandBuilder(ManageAdapter)
    ManageAdapter.Update(dtManage)
End Sub

次のエラーが表示されます。Syntax error in INSERT INTO statement.

私は何を間違っていますか?

追加情報

Public Sub createTable_Criteria()
    Dim cmd As New OleDb.OleDbCommand("CREATE TABLE " & tblName & "(" & "Calculation Text(10) NOT NULL," & "[Interval] Text NOT NULL," & "Formula Text," & "Tier_Juncture_1 Integer," & "Tier_Juncture_2 Integer," & "Tier_Juncture_3 Integer," & "Weight Integer, CONSTRAINT pk_Calculation PRIMARY KEY (Calculation, [Interval]));", con)
    cmd.ExecuteNonQuery()
End Sub
4

1 に答える 1

1

エラー メッセージに関する情報を見ると、SELECT クエリが select ステートメントのテーブルの主キーを返していないようです。この場合、OleDbCommandBuilder は必要な INSERT コマンドをビルドしません。

次の 2 つのオプションがあります。

  • 選択したテーブルの主キーを返します
  • アダプタ用の独自の INSERT/UPDATE/DELETE コマンドを作成する

あなたのテーブルの構造はわかりませんが(動的に構築された選択を考えると)、最善の方法は選択ステートメントで主キーを返すことです

于 2013-10-11T19:55:11.967 に答える