トップ回答者
ExecuteScalarについて

質問
-
おはようございます。
以下のようなコードがあり、
Dim dr As MySqlDataReader
Dim i As Integer
Dim Cmd As New MySqlCommand
Dim Cmd_Count As New MySqlCommand
Dim DataCnt As IntegerIf Microsoft.VisualBasic.IsDBNull(Me.txt_StockCode.Text) Or Me.txt_StockCode.Text = "" Then
If MsgBox("全銘柄のデータを取得しますか", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
Call MySQL_Open()With Cmd
.Connection = Cn
.CommandText = "s_s_codelist"
.CommandType = CommandType.StoredProcedure
End Withdr = Cmd.ExecuteReader
'指定銘柄のデータ件数が100件未満の場合は、データを取得
While dr.Read
Cmd_Count.Parameters.Clear()With Cmd_Count
.Connection = Cn
.CommandText = "s_s_datacount"
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New MySqlParameter("code", dr("mg_code")))
End With'データ件数を変数に格納
DataCnt = CInt(Cmd_Count.ExecuteScalar) ← ここIf DataCnt < 100 Then
Call Get_DailyOldData(dr("mg_code"))'完了のテキストを表示
Me.txt_Coment.Text = dr("mg_name") & "取得完了しました。"'パラメータをクリア
Cmd_Count.Parameters.Clear()
End If'パラメータをクリア
Cmd_Count.Parameters.Clear()
End While
Else
MsgBox("中止しました。", MsgBoxStyle.Critical)
Me.txt_StockCode.Select()
Exit Sub
End If
Else
Call Get_DailyOldData(Me.txt_StockCode.Text)
End If
If dr IsNot Nothing Then
dr.Close() : dr = Nothing
End If矢印の部分で以下のエラーが出ます。
There is already an open DataReader associated with this Connection which must be closed first.
いろいろと調べてはいるのですが、なぜこのようなエラーが出るのかわかりません。
どうか、アドバイスをお願いいたします。
回答
-
SQL Server 2005でしょうか? であれば、MARSが使えます。
(参考)
10 行でズバリ !! Multiple Active Result Sets の利用 (VB)
http://www.microsoft.com/japan/msdn/thisweek/300x10/Phase3/MARS/vb.aspx
すべての返信
-
SQL Server 2005でしょうか? であれば、MARSが使えます。
(参考)
10 行でズバリ !! Multiple Active Result Sets の利用 (VB)
http://www.microsoft.com/japan/msdn/thisweek/300x10/Phase3/MARS/vb.aspx -
TI-cb400s さんからの引用 矢印の部分で以下のエラーが出ます。
There is already an open DataReader associated with this Connection which must be closed first.
いろいろと調べてはいるのですが、なぜこのようなエラーが出るのかわかりません。
例外のメッセージで丁寧にやるべきことが指示されていますが、何をいろいろと調べられたのでしょうか?
翻訳サイト -> http://www.excite.co.jp/world/english/ とか AltaVista などがお勧めです。