Dim dtSetDatA As DataSet = New DataSet("tbl_AAA") strSql = "SELECT" strSql += " aa" strSql += ",bb" strSql += " FROM tbl_AAA" Dim oleDaDatA As OleDb.OleDbDataAdapter = _ New OleDb.OleDbDataAdapter(strSql, oleConn) oleDaDatA.Fill(dtSetDatA, "tbl_AAA") For i = 0 To dtSetDatA.Tables("tbl_AAA").Rows.Count - 1 strAA = dtSetDatA.Tables("tbl_AAA").Rows(intCnt)("aa").ToString
Dim dtSetDatB As DataSet = New DataSet("tbl_BBB") strSql = "SELECT" strSql += " cc" strSql += ",dd" strSql += " FROM tbl_BBB" strSql += " WHERE cc = '" & strAA & "'" Dim oleDaDatB As OleDb.OleDbDataAdapter = _ New OleDb.OleDbDataAdapter(strSql, oleConn) oleDaDatB.Fill(dtSetDatB, "tbl_BBB") For j = 0 To dtSetDatB.Tables("tbl_BBB").Rows.Count - 1 strBB = dtSetDatB.Tables("tbl_BBB").Rows(intCnt)("cc").ToString MsgBox ("strAA=" & strAA & " strBB=" & strBB) Next dtSetDatB.Clear() oleDaDatB.Dispose() Next dtSetDatA.Clear() oleDaDatA.Dispose()
If oleConn.State = ConnectionState.Open Then oleConn.Close() End If oleConn = Nothing
分類:[.NET]
当方MS-ACCESSからVB.NETへの移行で勉強中です。
さて、下のように1つのDataReaderを開いているときに、別のDataReaderを開くと
エラーになってしまいした。エラー内容は、
「この接続に関連付けられている DataReader が既に開いています。この DataReader を最初に閉じる必要があります。」
と出てしまいます。
この場合、もう一つ接続を開かないと(下記ではDo While内にsqlConn2、sqlCmd2を作成)いけないのでしょうか。それとも他の方法があるのでしょうか。
ほとほと悩んでおります。お知恵を貸してください。
↓↓↓↓↓↓↓↓↓↓↓↓
' オープン
sqlConn1 = New SqlConnection(strConn)
sqlConn1.Open()
sqlCmd1 = New SqlCommand
sqlCmd1.Connection = sqlConn1
sqlCmd1.CommandText = "SELECT Code1 FROM tbl_AAA"
dr1 = sqlCmd1.ExecuteReader
' ループ処理
Do While dr1.Read
sqlCmd1.CommandText = "SELECT Code2, Name2 FROM tbl_BBB WHERE (Code2 = " & dr1.Item("Code1") & ""
dr2 = sqlCmd1.ExecuteReader
Do While dr2.Read
Messagebox.Show(dr1.Item("Code1") & ":" & dr2.Item("Name2"))
Loop
dr2.Close
Loop
・
・
・