VB6ADO で SELECT 文の結果を取得する

スポンサーリンク

VB6 では ADO になります。また Execute メソッドにて返されるオブジェクトは ADODB.Recordset になります。

レコードを読み出す前に、最終レコードを超えていないかどうかを確認するために、必ず EOF プロパティを参照します。また、次のレコードの呼び出しは、MoveNext メソッドを使用します。

説明が重複して、コードが冗長となることを防ぐために、SqlConnection クラスの Open メソッドまでの説明を省きました。引数 cAdoConnection は ADO で SQL Server に接続する で接続が確立された ADODB.Connection クラスのインスタンスとします。

サンプルコード

以下にサンプルコードを示します。

VB6.0 以前
Private Sub ExecuteTest(ByVal cAdoConnection As ADODB.Connection)
    ' SQL コマンドを実行する
    Dim cRecordset As ADODB.Recordset
    Set cRecordset = cAdoConnection.Execute("SELECT LastName, FirstName FROM Employees")

    ' 実行時エラーが発生した場合は Finally ラベルに制御を移す (確実に Recordset を閉じるため)
    On Error GoTo Finally

    Dim stPrompt As String

    ' 最終レコードになるまで処理を進める
    Do While (Not cRecordset.EOF)
        ' 列の序数を元に値を取得する
        stPrompt = stPrompt & cRecordset(0).Value
        ' 列名を元に値を取得する
        stPrompt = stPrompt & cRecordset("FirstName").Value
        ' 改行コードを追加する
        stPrompt = stPrompt & vbNewLine
        ' 次のレコードに進める
        cRecordset.MoveNext
    Loop

    ' レコードセットを閉じる (正しくは オブジェクトの破棄を保証する を参照)
    If Not cRecordset Is Nothing Then
        If cRecordset.State <> adStateClosed Then
            cRecordset.Close
        End If

        Set cRecordset = Nothing
    End If

    ' 結果を表示する
    Call MsgBox(stPrompt)
End Sub

関連するリファレンス

準備中です。

スポンサーリンク