ray88’s diary

お仕事で困ったとき用の自分用の覚書

ACCESS VBA ADO レコードセットの取得(遅延バインディング編)

■方法1:RecordSetオブジェクトのOpenメソッドを使用する
 引数①ソース(テーブル名、クエリ名、SQLステートメント等を指定)
 引数②CN(Connectionオブジェクトを指定)
 引数③カーソルタイプ(CusorTypeプロパティの値を指定)
 引数④ロックタイプ(LockTYpeプロパティの値を指定)
 ※引数③と④は省略可能

    Dim adoRs As Object 'ADOレコードセットオブジェクト
    Set adoRs = CreateObject("ADODB.Recordset")

    adoRS.Open ソース,CN,カーソルタイプ,ロックタイプ

例)サンプルコード
※カレントDBを操作する場合は以下リンクを参照しコネクションオブジェクトを設定する
Access VBA ADO データベースに接続する(遅延バインディング) - ray88’s diary

Sub adoTest()
    Dim adoCN As Object
    Dim adoRS As Object
    Dim strSQL As String    
    Set adoCN = CreateObject("ADODB.Connection")
    Set adoRS = CreateObject("ADODB.Recordset")
    'Accessファイルパスを「Data Source」に指定
    adoCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=C:\デスクトップ\Accessアプリ\data.accdb;"             
    strSQL = "SELECT * FROM T_注文履歴;"

    'レコードセットを取得
    '「3」は「adOpenStatic」の値
    adoRS.Open strSQL, adoCN, 3
    Do Until adoRS.EOF
        Debug.Print adoRS.Fields(0), _
                    adoRS.Fields(1), _
                    adoRS.Fields(2)
        adoRS.MoveNext
    Loop    
    adoRS.Close: adoCN.Close
    Set adoRS = Nothing: Set adoCN = Nothing
End Sub

■方法2:ConnectionオブジェクトのExecuteメソッドを使用する
adoCNにはConnectionオブジェクトを指定
コマンドにはテーブル名、クエリ名、SQLステートメントなどを指定

  Dim adoRS As Recordset
    Set adoRS = adoCN.Execute(コマンド)

例)サンプルコード
※カレントDBを操作する場合は以下リンクを参照しコネクションオブジェクトを設定する
Access VBA ADO データベースに接続する(遅延バインディング) - ray88’s diary

Sub adoTest()
    Dim adoCN As Object
    Dim adoRS As Object
    Dim strSQL As String    
    Set adoCN = CreateObject("ADODB.Connection")
    Set adoRS = CreateObject("ADODB.Recordset")
    'Accessファイルパスを「Data Source」に指定
    adoCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=C:\デスクトップ\Accessアプリ\data.accdb;"             
    strSQL = "SELECT * FROM T_注文履歴;"
    'レコードセットを取得
    Set adoRS = adoCN.Execute(strSQL)
    Do Until adoRS.EOF
        Debug.Print adoRS.Fields(0), _
                    adoRS.Fields(1), _
                    adoRS.Fields(2)
        adoRS.MoveNext
    Loop    
    adoRS.Close: adoCN.Close
    Set adoRS = Nothing: Set adoCN = Nothing
End Sub