ADO で 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
関連するリファレンス
準備中です。