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

解決済みの質問

VB.netの重複データ数カウントについて

下記コードを行ったときに
重複データ数のカウントを行いたいです。
テーブルアダプタを使っているためVB側でのカウントの仕方がわからないです。
メッセージで「●件中▲件登録しました」と表示したいです。

【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

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

お知恵をお貸しください。
どうぞよろしくお願いいたします。

投稿日時 - 2018-08-16 11:27:52

QNo.9527992

困ってます

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

おそらくVB側、自前で

 SERECT Count(*) as MyCount FROM [dbo].[Table]
 WHERE [IDcode] = チェックするコード '注
といったSQL文を組み立てて実行し
戻ってきた結果セット:MyCount(レコード数)が0かどうかを判断し
0だったら挿入するSQL文を組み立てて実行する

というロジックに変更し
挿入した回数を数える必要があるものと思います。

むろん、このロジックを
Me.TableTableAdapter.InsertQuery(dr("date"), dr("IDcode"))
に代えて必要回数
(TableDataGridView.RowCount -1) かな?
行います。

承知かもしれませんが
DBへの接続、SQL文の組立、実行などは
http://sssproduct.work/2017/11/03/vb-net%E3%81%A7sql-server%E3%81%AEsql%E6%96%87%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B/
あたりが参考になりそうです。

注 SERECT 正しくはSERECTです。
 半角にすると、どうやらポストできないようなので、 
 仕方なく便宜的に全角にしています。

投稿日時 - 2018-08-16 22:24:41

補足

dataadpterを使うのは難しいのでしょうか?
組み立てに時間がかかりそうで回答中にできそうもなく、知識がなく申し訳ありません。

投稿日時 - 2018-08-20 09:11:37

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

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

回答(2)

ANo.2

参考URLを見てみてください。
newChildRecordsとかの数でわかるけど、失敗した場合は正確ではないので。
Updateメソッドでの戻り値が数だと思うのですが違うのかな?

参考URL:https://msdn.microsoft.com/ja-jp/library/ms171933.aspx

投稿日時 - 2018-08-17 03:38:13

補足

できないでーす><
難しい~><

投稿日時 - 2018-08-20 15:47:40

あなたにオススメの質問