
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】オートフィルター を...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
ワードの図形にマクロを登録で...
-
VBAでFOR NEXT分を Application...
-
算術演算子「¥」の意味について
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
質問58753 このコードでうまく...
-
vbaマクロについて
-
Vba Array関数について教えてく...
-
testファイル内にある複数のpng...
-
ダブルクリックで貼り付けた画...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】変数を使った、文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridViewの特定列に入力さ...
-
Excel 1セル当りの文字数が2...
-
GUIDの重複
-
ListView重複データ削除
-
VBAにて複数の重複データを取得...
-
A1に100と入力した時点で 自動...
-
クロス集計
-
データベースを公開して任意に...
-
ExcelVBAで、コメントのサイズ...
-
PythonでのEXCELデータの処理に...
-
excel vbaについて
-
VBA 最終行のひとつしたの行に...
-
会社でIEを開いて入力するデー...
-
EXCEL VBA 並び替えについて
-
javaのデータからヒストグラム...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
おすすめ情報
INSERT INTO [dbo].[Table] ([date], [IDcode])
SELECT @date,@IDcode
WHERE NOT EXISTS(
SELECT * FROM [dbo].[Table] WHERE [IDcode] = @IDcode
)
とインサート文のまちがいだったみたいです。
このコードをTableAdapterを用いずにfor文で行うにはどのようなコードにたら良いでしょうか?
まったく質問が変わってしまいますがどうぞよろしくお願いいたします。