こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB.netのTableAdapter.Inser

VB.netについて質問です。
TableAdapter.InsertQueryについて質問になります。

・データセットに紐づいているDataGridViewからTableAdapter.InsertQueryを利用してDBに登録したい。
・DBに登録されているIDcodeデータとDataGridViewのIDcodeデータを比較し、DataGridViewのIDcode重複データは除いてDBに登録したい。
(1)現在のコードですと同じものを再度登録すると主キーエラーが出てしまいます。
DBではIDcodeを主キーにしております。
(2)SQLでWHERE NOT EXISTS文をいれている(重複ははじいているつもり)のですがダメです。
皆様のお知恵をお貸しください。


【DBのカラム】
date, IDcode

【現在のコード】
If TableDataGridView.RowCount = 1 Then
MsgBox("登録するデータがありません")
Else
For Each dr As DataRow In DataSet1.Tables(0).Rows
Me.TableTableAdapter.InsertQuery(dr("date"), dr("IDcode"))
Next
Me.Close()
End If

【InsertQuery(@date, @IDcode)の中身】
INSERT INTO [dbo].[Table] ([date], [IDcode]) VALUES (@date, @IDcode);
SELECT date, IDcode FROM [dbo].[Table]
WHERE NOT EXISTS(SELECT * FROM [dbo].[Table] WHERE [IDcode] = @IDcode)
order by IDcode


どうぞよろしくお願いいたします。

投稿日時 - 2018-08-14 13:04:40

QNo.9527410

困ってます

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

INSERT INTO [dbo].[Table] ([date], [IDcode])
SELECT @date, @IDcode
WHERE NOT EXISTS(SELECT * FROM [dbo].[Table] WHERE [IDcode] = @IDcode);

でいけるだろうと思います。

投稿日時 - 2018-08-15 17:58:15

お礼

助かりました。できました。
ありがとうございます。

投稿日時 - 2018-08-16 10:38:05

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

試してないので間違っているかもしれませんが、SQL文が違うのではないでしょうか。

INSERT INTO [dbo].[Table] ([date], [IDcode])
SELECT @date, @IDcode FROM [dbo].[Table]
WHERE NOT EXISTS(SELECT IDcode FROM [dbo].[Table] WHERE [IDcode] = @IDcode)
order by IDcode

投稿日時 - 2018-08-15 04:13:25

あなたにオススメの質問