DataSetのUpdateが出来ません

解決


やんやん  2006-06-16 23:59:21  No: 131906

たびたびすみません。
これも前回のDataGridView問題と関係あるのですが…
#前回何度もご親切にご回答頂いた特攻隊長まるるう様ありがとうございました。

DataGridViewに表示させている商品のデータの新規代入はできるのですが、更新が出来ません。

具体的には、DataGridView上に表示されている商品を、新規に主キーを含むいくつかのデータを(途中まで)代入して終わります。
その後、残りのデータを代入またはデータを新しい値に更新しようとすると、
「制約 'PK_<商品名>' の PRIMARY KEY 違反。オブジェクト 'dbo.<商品名>' には重複したキーを挿入できません。
ステートメントは終了されました。」
と言われてしまい、データの更新が出来ません。

データの更新は以下のようにしています。
---
sCom As SqlClient.SqlCommandBuilder
adapter As SqlClient.SqlDataAdapter
dataset = New DataSet("T_<商品名>")

          ・
          ・
          ・

sCom = New SqlClient.SqlCommandBuilder(adapter)
adapter.Update(dataset, "T_<商品名>")
---

推測ですが、SQLのUPDATEではなくINSERTを実行しようとしているみたいです。
このような場合どうすればよいのでしょうか?
手動でUPDATEかINSERTかどっちを実行するかを選べる、というか選べるなら選ぶ設定をしないといけないのでしょうか?
主キーになっている顧客IDは変更していません。

どなたかご教授頂けないでしょうか。
宜しくお願い致します。

どなたかご教授頂けないでしょうか?
宜しくお願い致します。


やんやん  2006-06-17 00:02:26  No: 131907

追記です。
Visual Basic 中学校様
http://hpcgi1.nifty.com/rucio/mb1/mb1.cgi
でも伺ってみます…


やんやん  2006-06-20 23:01:37  No: 131908

下記のように書き直したらうまくいきました。
---
Dim adapter As SqlClient.SqlDataAdapter
Dim sCom As New SqlClient.SqlCommandBuilder
Dim dview<商品名> As DataView

dview<商品名> = DataGridView<商品名>.DataSource

sCom = New SqlClient.SqlCommandBuilder(adapter)
adapter.Update(dview<商品名>.Table)
--- 
お騒がせ致しました、すみません。


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

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






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