0

アイテムをデータグリッドに入力し、2 つのボタン (1 つは読み込み、もう 1 つは保存) とフォームのデータグリッドを使用してデータベースに更新しようとしています。更新時に「構文エラー (クエリ式に演算子がありません)」が発生し続けますが、その理由がわかりません。もう 1 つの質問は、DataAdapter とデータセットをメモリ内のどこでディメンション化する必要があるかということです。クラス下?

    'this loads my data from db into datagrid

    Dim con As New OleDb.OleDbConnection
    Dim sql As String

    con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=dbsrc.mdb"

    con.Open()
    sql = "SELECT * from [Employee Assignments]"
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "Assignments")

    con.Close()

    DataGridView1.DataSource = ds.Tables("Assignments")

次のコードは、データベースを更新して、datagridview で行われた変更を反映する必要があります。

    'this will eventually update the datagrid back into the db

    Dim cb As New OleDb.OleDbCommandBuilder(da)
    Dim con As New OleDb.OleDbConnection

    'Dim sql As String
    con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=dbsrc.mdb"

    con.Open()

    da.Update(ds, "Assignments")

    con.Close()

    DataGridView1.DataSource = ds.Tables("Assignments")

msdn でこの記事を読みました - http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update.aspx - しかし、あまり役に立たなかったようです。混乱していますが、私は信じています私の問題は、正しいデータセットを識別してデータベースに戻すことではありません。DataAdapter を使用してプル、変更、および DB に送り返すデータセットをどのように処理すればよいですか?

4

1 に答える 1

0

テーブルの名前にスペースが含まれている場合、この問題について CommandBuilder に通知し、エラーを回避するためにQuotePrefixおよび QuoteSuffix プロパティを設定する必要があります。

cb.QuotePrefix = "["
cb.QuoteSuffix = "]"

これら 2 つのデフォルトは空の文字列であるため、変更をデータベースに書き戻そうとすると、構文エラーが発生します。

于 2013-03-06T16:55:24.660 に答える