同時実行違反がなぜかおこります。

解決


hiroko  2008-10-03 04:57:31  No: 140560

OleDbDataAdapterのUpdateで同時実行違反が起こり困っています。
開発環境はVB.NET2008でmdbファイルをオープンし、
データを書き込んだ後
UPADTEしています。
別の処理ではうまく動いているアルゴリズムなので、
タイピングミスではないようです。
対応方法をお教えください。

Public da As OleDbDataAdapter
Public ds As New DataSet

ds.Clear()
sql = "select "
sql = sql & "* "
sql = sql & "from 物件 "
sql = sql & "where ((物件ID=1)) "
da = New OleDbDataAdapter(sql, currentCn)
da.Fill(ds, "tbl")
dr = ds.Tables("tbl").Rows(0)
dr("物件名") = "abc"
Dim cb As New OleDbCommandBuilder(da)
da.Update(ds, "tbl")


hiroko  2008-10-03 18:09:40  No: 140561

自己RESです。

mdbファイル
対象テーブルのフィールド名に"NO"を指定していると
このエラーが起きるようです。
フィールド名を変更することで回避いたしました。


もげ  2008-10-03 18:49:10  No: 140562

更新対象データが存在しないか、既に変更が生じていると同時実行違反が出るはずです。
他の人による変更の可能性もあるし、
プログラムの作りによっては、自分自身が複数コネクション持ってて競合したり
という可能性もあるので、
部分だけ見ていても解決しない可能性もあります。

示されたコードだけをプログラム全体から切り出した
簡単なプログラムを実行してもその現象は再現しますか?
であれば、
とりあえず、以下の情報をください
・テーブルの構造(各フィールドの名前とデータ型、主キー)
・OleDbCommandBuilderが生成しているSQL


もげ  2008-10-03 18:52:02  No: 140563

ああ、解決ですね。なるほど。
>・テーブルの構造(各フィールドの名前とデータ型、主キー)
を示して欲しかったのは、その可能性があったためです。
SQL文で[]で囲えば通る可能性もありますが、
そんなフィールド名は使用しないほうがよいでしょう。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加