dポイントプレゼントキャンペーン実施中!

下記コードにてdataadapterにてインサートを行っております。
下記コードですとインサートしても戻り値が「0」されなくても「0」です。
インサートしたとき、戻り値「1」が返ってきて欲しいです。
どこがまちがってますでしょうか。

'変数の宣言
Dim returnValue As Integer
Dim totalValue As Integer

'NonQueryTableAdapの宣言
Dim NonQueryTableAdapter As CreateIDDataSetTableAdapters.TableTableAdapter
NonQueryTableAdapter = New CreateIDDataSetTableAdapters.TableTableAdapter()

’DBに存在しなければインサートする
For Each dr As DataRow In CreateIDDataSet.Tables(0).Rows
Me.TableTableAdapter.InsertQuery(dr("date"), dr("IDcode"))

'インサートクエリにて返ってきた値を数値化する
returnValue = NonQueryTableAdapter.InsertQuery(dr("date"), dr("IDcode"))
    Next



インサートクエリ
INSERT INTO [dbo].[Table] ([date], [IDcode])
SELECT @date, @IDcode
WHERE NOT EXISTS(SELECT * FROM [dbo].[Table] WHERE [IDcode] = @IDcode);



ご教示お願いします。

質問者からの補足コメント

  • うーん・・・

    Me.TableTableAdapter. InrertQuery()の戻り値はどのように取得したらよいのでしょうか???

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/08/24 11:39
  • つらい・・・

    てっきりデータアダプターインサートされた際に登録されたら1、登録されなかったら0のような戻り値がかえってくると思っておりました。
    このような戻り値は判定できないのでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/08/24 17:01

A 回答 (3件)

以前にも回答していますが、InsertQuery()(内部ではExecuteNonQuery())は、戻り値として、影響を及ぼしたレコード件数を返します。


1が実行できた、0が実行に失敗した、ようなフラグではありません。

INSERT INTO SELECT ~ というSQLを発行していれば、戻り値は1かもしれませんし、2かもしれません。
INSERTされたレコード数なのですから。
今回のようなSQLでは、1件登録するかしないか、しかないので、1か0しか返ってこないだけです。

登録されたかされてないかを確認したいなら、Me.TableTableAdapter. InrertQuery()の戻り値が0かそうでないかです。
    • good
    • 0
この回答へのお礼

ありがとうございました!!!!!!

お礼日時:2018/08/27 14:10

戻り値を普通に変数に入れてください。


InsertQuery()の戻り値の型はIntegerですよね。
これはもはやDBアクセスは関係のない話です。
この回答への補足あり
    • good
    • 0

Me.TableTableAdapter.InrertQuery()でレコードが登録されれば、NonQueryTableAdapter.InsertQuery()ではレコード登録されないので0が返ってきて当たり前ですよね。



NonQueryTableAdapterなんてのは全くいらなくて、Me.TableTableAdapter. InrertQuery()の戻り値を取得すればいいでしょう。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!