DOBON.NETプログラミング道掲示板

■35582 / 親階層)  DataAdapter.Updateで構文エラー
□投稿者/ けい 一般人(11回)-(2024/03/11(Mon) 20:33:55)
  • アイコン環境/言語:[Windows10、VB.NET2022 ACCESS(Microsoft365)] 
    分類:[.NET] 

    お世話になります。

    Windows10、VB.NET2022で開発しています。

    ACCESSのテーブルAがあり、
    フィールドは[ID](主キー)と[フィールドP]とします。

    ソフトで、テーブルA全体のデータセットをSELECT文で取得し、
    1行ずつ、[フィールドP]を「値」で更新する処理を書いています。

    まずFor〜Nextループの中で、UPDATE文を使用してみます。

    Try〜Catch〜Finally、トランザクションはここでは省略します。

    System.Data.OleDb Ver8.0.0は、
    NuGetでインストール済です。

    -------------------------------------
    Private Sub TEST()
    Using cn As New OleDb.OleDbConnection(接続文字列)

    Dim da As OleDb.OleDbDataAdapter
    Dim ds As DataSet
    Dim dt As DataTable
    Dim dr() As DataRow
    Dim i As Integer
    Dim cmd As OleDbCommand

    Dim strSelect As String
    Dim strUpdate As String

    strSelect = "select * from [テーブルA]"
    da = New OleDbDataAdapter(strSelect, cn)
    ds = New DataSet
    da.Fill(ds, "テーブルA")
    dt = ds.Tables("テーブルA")
    dr = dt.Select

    For i = 0 To dr.Length - 1
    strUpdate = "update [テーブルA]" &
    " set [フィールドP]=[値] where [ID]=" & dr(i)("ID") & ""
    cmd = New OleDbCommand
    cmd.Connection = cn
    cmd.CommandText = strUpdate
    cmd.ExecuteNonQuery()
    Next

    End Using

    End Sub
    -------------------------------------

    この書き方ですと、更新処理は成功しますが、
    すでにテーブルAの特定行における処理をしている中で、
    UPDATE文のWHEREで再度同じ行を検索するような書き方になっています。

    なので、ここではDataAdapter.Updateの書き方で書きたいです。
    下記のように書いてみました。

    -------------------------------------
    Private Sub TEST()
    Using cn As New OleDb.OleDbConnection(接続文字列)

    Dim da As OleDb.OleDbDataAdapter
    Dim ds As DataSet
    Dim dt As DataTable
    Dim dr() As DataRow
    Dim cb As OleDbCommandBuilder
    Dim i As Integer
    Dim strSelect As String

    strSelect = "select * from [テーブルA]"

    da = New OleDbDataAdapter(strSelect, cn)
    ds = New DataSet
    da.Fill(ds, "テーブルA")
    dt = ds.Tables("テーブルA")
    dr = dt.Select

    cb = New OleDbCommandBuilder(da)

    For i = 0 To dr.Length - 1
    dr(i).BeginEdit()
    dr(i)("フィールドP") = [値]
    dr(i).EndEdit()
    Next

    da.Update(ds, "テーブルA")・・・※

    End Using

    End Sub
    -------------------------------------

    こちらですと、※の部分で構文エラーが出ます。

    ※をFor〜Nextループの中においても、エラーでした。

    BeginEdit、EndEditを外してもエラーです。

    以前VB.NET2012で開発していた際には、
    この書き方で更新処理ができたと思うのですが、
    おかしな部分がございますでしょうか。

    どうぞよろしくお願い申し上げます。

マルチポストを報告
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: DataAdapter.Updateで構文エラー /KOZ
→Re[1]: DataAdapter.Updateで構文エラー /魔界の仮面弁士
 
上記関連ツリー

Nomalアイコン DataAdapter.Updateで構文エラー / けい (24/03/11(Mon) 20:33) #35582 ←Now
Nomalアイコン Re[1]: DataAdapter.Updateで構文エラー / KOZ (24/03/12(Tue) 09:47) #35583
│└Nomalアイコン Re[2]: DataAdapter.Updateで構文エラー / けい (24/03/12(Tue) 10:26) #35584 解決み!
Nomalアイコン Re[1]: DataAdapter.Updateで構文エラー / 魔界の仮面弁士 (24/03/12(Tue) 10:31) #35585
  └Nomalアイコン Re[2]: DataAdapter.Updateで構文エラー / けい (24/03/12(Tue) 11:43) #35586
    └Nomalアイコン Re[3]: DataAdapter.Updateで構文エラー / 魔界の仮面弁士 (24/03/12(Tue) 14:40) #35587
      └Nomalアイコン Re[4]: DataAdapter.Updateで構文エラー / けい (24/03/13(Wed) 14:00) #35588 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -