投稿者 MMTRS  (社会人) 投稿日時 2010/6/23 09:19:01
>公開できる範囲でソースを提示していただけると、他の皆様も回答しやすいと思います。
そうですね、失礼しました。簡略化したものですが処理の流れは以下のようになっています。

Public Class Form1

    Private cn As New SqlClient.SqlConnection
    Private cm As SqlClient.SqlCommand

    Private Sub Form1_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load

        cn.ConnectionString = 接続文字列
        cn.Open()
        cm = cn.CreateCommand()

    End Sub

    Private Sub TextBox1_Validating(ByVal sender As ObjectByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

        Call GetData1()     'Closeなし 

    End Sub

    Private Sub TextBox2_Validating(ByVal sender As ObjectByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating

        Call GetData2()     'Closeあり 

    End Sub

    Private Sub GetData1()
        Dim dr As SqlClient.SqlDataReader

        cm.CommandText = "SELECT * FROM [テーブル1] WHERE [フィールド1] = '" & TextBox1.Text & "'"
        dr = cm.ExecuteReader()

        If dr.Read() Then
            Label1.Text = dr("フィールド2")
        End If

        'dr.Close() 

    End Sub

    Private Sub GetData2()
        Dim dr As SqlClient.SqlDataReader

        cm.CommandText = "SELECT * FROM [テーブル2] WHERE [フィールド1] = '" & TextBox2.Text & "'"
        dr = cm.ExecuteReader()

        If dr.Read() Then
            Label1.Text = dr("フィールド2")
        End If

        dr.Close()

    End Sub
End Class


ただ、上のコードを実行しても初回のGetData1→GetData2で必ずエラーとなります。
実際のコードは他にもcnを使用してSqlDataReaderを取得している箇所はありますが
問題となっている現象は上の処理と同じ流れで発生します。

それからもう1つ書き忘れましたが、VB2008、SQL Server 2008です。