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

データーベース更新について。

環境/言語:[VB.net2003]
分類:[.NET]

ただ今、伝票データーの登録システムをvb.net2003で作ってまして、
わからないところがあったので質問に来ました。

それで、質問の内容なんですが、
データーベースを編集し、更新ボタンを押すと、
「'System.InvalidOperationException' のハンドルされていない例外が   
system.data.dll で発生しました。

追加情報 : 更新には、変更された行を含む DataRow コレクションが渡された
とき、有効な UpdateCommand が必要です。」
と表示されてしまいます。
ちなみに、更新ボタンのコードは
 Private Sub btnUpdate_Click(ByVal sender As System.Object, _ ‘[更新]

ByVal e As System.EventArgs) Handles btnUpdate.Click


Me.BindingContext(Dset1, "商品一覧").EndCurrentEdit()

odaShohin.Update(Dset1, "商品一覧")


End Sub

odashoinやdset1はちゃんと存在しますが、
どうやらodaShohin.Update(Dset1, "商品一覧")の行がおかしいらしくて・・・
しかし、自分が持っている本(VB.netによる「入門」データベースプログラミング)
にもこのようにコードがかかれています・・・
どこがおかしくて、どのようにコードを書き換えたらいのか、どなたか教えてくれませんでしょうか。お願いいたします。
いま発見したんですが、数字だと更新されます。
しかし、データーベースのデータ型をテキスト型などにかえていじってみても
やはりできませんでした。
また、いろいろいじっていくと、更新ボタンを押した時のエラーメッセージが
「'System.Data.DBConcurrencyException' のハンドルされていない例外が system.data.dll で発生しました。

追加情報 : 同時実行違反 : UpdateCommand によって 0 件処理されました。」
に変わってしまいました。
いろいろ状況が変わっているようですが、更新する際は、odaShohin.UpdateCommand.CommandTextが使用されますので、まずはその内容を確認してみましょう。
返信どうもです。
自分もそこがわるいのかもと思っていじりまくりましたけど、解決しません・・。
後ひとつわかった情報です。
OleDbDataAdapterによって、自動で作られたupdatecommandのcommandtextの場合
レコード1は更新できますが、レコード3とか2になるとエラーがでます。
それが、空白のところに値を代入して更新するとエラーがでるみたいです。
■No12631に返信(サッカーおたくさんの記事)
> 後ひとつわかった情報です。
> OleDbDataAdapterによって、自動で作られたupdatecommandのcommandtextの場合
> レコード1は更新できますが、レコード3とか2になるとエラーがでます。

InsertCommand、DeleteCommandなどのCommandTextも正しく作成
されていますか?

DataAdapterのUpdateメソッドは行の状態を判定して、最適なコマンドを
発行するため、InsertCommandやDeleteCommandも正しく設定する必要が
あります。

所々修正されているようですが、現状のエラーはどのようなものですか?

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