- - PR -
ストアドからの返り値がうけとれない
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-13 15:49
VB.NETとSQLSERVER2000で開発しています。
ストアドの中で対象データを処理して、処理対象をワークテーブルに書き出して その書き出した結果をVB側で受け取ってファイルに出力しようとしています。 ところが、結果を受け取って出力しようとすると 処理結果が複数件あるはずなのに一件だけしかファイルに出力されません。 SQLクエリアナライザーからストアド単体でデバッグ実行させると ちゃんと想定していたデータがすべて返り値になっているのですが、 sqlCommand = New SqlCommand("DP0516_UpdateKarishime", sqlConn) '------ ストアド実行 ------ sqlCommand.Transaction = sqlTran sqlCommand.ExecuteNonQuery() sqlReader = sqlCommand.ExecuteReader sqlCommand.CommandType = CommandType.StoredProcedure sqlCommand.CommandTimeout = shtTimeOut sqlCommand.Parameters.Clear() sqlCommand.Parameters.Add("@chrKeijyoTuki", System.Data.SqlDbType.Char, 7) パラメータを設定しています If Me.chkShiireShime.Checked = True Then '----- 仮締処理チェックリストを出力する ------- If sqlReader.HasRows Then strFileName = "仮締め処理_" & Me.pnlUserID.Text & "_" & Format(clsPrjUtil.GetSysYMDHMS(), "yyMMddHHmmss") & ".xls" FileOpen(intfileNo, strOutDir & strFileName, OpenMode.Output) strWriteLine = "支払番号" WriteLine(intfileNo, strWriteLine) Do While (sqlReader.Read) strWriteLine = CStr(sqlReader(0)) WriteLine(intfileNo, strWriteLine) Loop FileClose(intfileNo) sqlReader.Close() '----- 支払の見直しの必要なデータがありました ------- clsMsg.outMsg(216) End If End If --------- 一時テーブル ----------- DECLARE @tblInsertSIHARAI TABLE( cozSHIHARAI_NO CHAR(10) ) 〜 INSERT INTO @tblInsertSIHARAI(cozSHIHARAI_NO)VALUES(@I_SHIHARAI_NO) 〜 /* 支払い番号の一覧を返す */ SELECT * FROM @tblInsertSIHARAI RETURN(0) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO | ||||||||
|
投稿日時: 2006-04-13 15:52
Do While (sqlReader.Read) は 1 度しか通過しないということでしょうか?
ファイルに書き込む際の問題か、それ以前かを切り分ける必要があります。 ブレークポイントを設定してご確認ください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-13 15:56
しっかり見てみたら...
ここって何をしてるんですか? ExecuteNonQuery で "実行" した後に、もう 1 回 ExecuteReader で "実行" していますね。
実行し終えた Command に StoredProcedure タイプを設定????? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-13 16:29
ご指摘ありがとうございます。
sqlCommand.ExecuteNonQuery() の行を消したらうまく動きました よく意味がわからないで人の作ったサンプルを元にしてやっているので このような基本的なミスが理解できず恥ずかしい限りです。 | ||||||||
|
投稿日時: 2006-04-13 16:58
できれば意味を理解して利用した方が良いです。 まず、わからないメソッドはリファレンスを読むことからです。 (覚えるにこしたことはないですが、無理に覚える必要はないです) SqlCommand.ExecuteNonQuery メソッド もしかしたら、事前に防ぐことができたのかもしれません。 大変でしょうけど、頑張ってください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1