VB.netについて質問です。
TableAdapter.InsertQueryについて質問になります。
・データセットに紐づいているDataGridViewからTableAdapter.InsertQueryを利用してDBに登録したい。
・DBに登録されているIDcodeデータとDataGridViewのIDcodeデータを比較し、DataGridViewのIDcode重複データは除いてDBに登録したい。
①現在のコードですと同じものを再度登録すると主キーエラーが出てしまいます。
DBではIDcodeを主キーにしております。
②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
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Insertしようとした時に既にデータがあるということは、Insertが誤りなのではなく、それに至る検証に誤りがあるということでは?
どういう場面での問題なのか分かりませんが、Insert限定なら、DataRowオブジェクトのRowStateがAddedの行について、事前に存在検証することで解決しませんか?
回答ありがとうございます。
インサート文が誤っておりました。
こちらのプログラムをfor文にしたときのコードを教えていただけたら幸いでございます。
No.1
- 回答日時:
よくわかんないけど、アダプター使ってるならupdate()じゃダメなんですか?
update()ではできているのですが、DBの主キーエラーを回避して(重複データは除く)登録処理を行いたいです。
Try
Me.TableTableAdapter.Update(Me.DataSet1.Table)
Me.Close()
End If
Catch ex As Exception
'IDcodeが既に登録されている場合
If CType(ex, SqlException).Number = 2627 Then
End If
End Try
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php エラー 2 2022/10/23 16:43
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
GUIDの重複
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
.netで、ibm漢字で書かれたテキ...
-
エクセルVBA:日付データの変換...
-
Excel VBA メール作成について ...
-
printfの%eで指数部分の桁数を...
-
UCS-2の一覧表が欲しい
-
GetWindowTextでアドレスバーか...
-
(C言語・配列)date[i]の分散...
-
2バイト文字の判定はString#get...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
マクロの書き換え箇所がわかり...
-
COBOL PICTUREで X,S,Vの意味
-
c言語 Bitについて
-
VBSでテキストファイルの文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridViewの特定列に入力さ...
-
Excel 1セル当りの文字数が2...
-
ListView重複データ削除
-
EXCEL VBA 並び替えについて
-
Excel VBA チェックツール
-
GUIDの重複
-
配列xのヒストグラムを求める...
-
excel vbaについて
-
javaのデータからヒストグラム...
-
粒度分布と粒径分布のヒストグ...
-
VB.netのTableAdapter.InsertQu...
-
ExcelVBAで、コメントのサイズ...
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
Excel VBA メール作成について ...
-
バイト列とバイナリ列の違いが...
-
printfの%eで指数部分の桁数を...
おすすめ情報
INSERT INTO [dbo].[Table] ([date], [IDcode])
SELECT @date,@IDcode
WHERE NOT EXISTS(
SELECT * FROM [dbo].[Table] WHERE [IDcode] = @IDcode
)
とインサート文のまちがいだったみたいです。
このコードをTableAdapterを用いずにfor文で行うにはどのようなコードにたら良いでしょうか?
まったく質問が変わってしまいますがどうぞよろしくお願いいたします。