• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2008データベース)

VB2008データベースの非接続型データベースでUpdateをする際のエラーとは?

このQ&Aのポイント
  • VB2008の非接続型データベースでUpdateをする際にOleDbCommandBuilderを使用していますが、エラーが発生しています。
  • エラーの内容がわかっておらず、ネットや参考書でも解決策が見つかりません。
  • どなたかこのエラーの解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

うーん、厄介ですね。 CommandBuilderは、更新用のSQL文を自動生成するもので、今回の例だと例えば以下のようなUPDATEクエリを自動生成します。 UPDATE 物件 SET [主キー]=[更新後の値],[項目1]=[更新後の値],.... WHERE (([主キー]=[更新前の値] AND (([NULL値なら1]=1 AND [項目1] IS NULL) OR ([項目1]=[更新前の値])) AND ....) したがって、書かれたメッセージが出るのは、読み込んだ時にあったレコードがなくなっているか、主キーの内容が変更されていることにより、更新結果がゼロ件になったときだけだと思うのです。 ソースを見る限り、そのような可能性はないです。 質問者さんの内容を見る限り、 ・対象の物件テーブルは少なくとも今は他に誰も更新したりしない ・物件テーブルを読み込んで更新するまでのソースには特に省略した部分はない と理解しているのですが、あっていますか?

intexjp
質問者

補足

いろいろとご親切に対応していただき有難うございます。 まだ、解決はしていませんが、もう一度参考書などで検討してみます。 また、よろしくお願いします。

その他の回答 (2)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

> "SQL ServerなのにJet"とはOleDbConnectionの文のことですか? 質問者さんがSQL Serverカテゴリに書き込まれたので、そう思っただけですが、SQL Serverではなく、MS Accessなんですね。 同じ処理を書いてみましたがエラーにはなりませんでした(手元に2007しかないので、JetでなくAceですが)。 したがって、どんなエラーメッセージが出るのか、示していただかないとわからないです。

intexjp
質問者

補足

親切にご回答有難うございます。 実行箇所を下記のように変更してエラーメッセージを表示させると ”同時実行違反:UpdateCommand によって、処理予定の1レコードのうち0件が処理されました。”と表示されます。 Try    cBuild = New OleDb.OleDbCommandBuilder(dAdp)    dAdp.Update(dSet, "物件") Catch ex as Exception    MsgBox(ex.Message) End Try ちなみに Try    cBuild = New OleDb.OleDbCommandBuilder(dAdp)    dAdp.SelectCommand = New OleDb.OleDbCommand("UPDATE", cn)    dAdp.Update(dSet, "物件") Catch ex as Exception    MsgBox(ex.Message) End Try としますと”UPDATE ステートメントの構文エラーです。”とメッセージがでます。 お手数をおかけします。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

・接続文字列が分かりませんが、SQL ServerなのにJetなんですか?  もしかしてSQL Serverにリンクを張ったMDBかなにかを更新するということですか? ・エラーの内容がわからないとコメントできないのでは?

intexjp
質問者

補足

ご回答有難うございます。 データベースの知識が乏しいのですいません。 ACCESSデータベース(.mdb)をテーブルに読み込み、それをDataGridViewに表示して変更された内容を元のデータベースに書き込もうとしています。参考書と全く同じ文を使用していますがエラーが出てしまいます。 わからなくてすいません! "SQL ServerなのにJet" とはOleDbConnectionの文のことですか? 参考書にも記述として Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=****;")とありますが。 教えてください。

関連するQ&A