Microsoft Access VBA - SELECTステートメントでレコードセットを取得する方法

◆Commandオブジェクト
 レコードセットを作成する際に、SELECTステートメントを使用することができます。
ADOの場合は、Commandオブジェクトを使用してレコードセットを作成し、SELECTステートメントを送信します。
DAOの場合は、OpenRecordSetオブジェクトでSELECTステートメントを指定します。

◆Sample

次の例は、テーブル「Customer」から「氏名」のみをレコードセットとして作成します。

Private Sub cmdSelect_Click()
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
   Dim cm As ADODB.Command
   Dim msg As Integer

   ' Connectionオブジェクト変数「ct」に、カレントプロジェクトを代入する
   Set cn = Application.CurrentProject.Connection
   ' Commandオブジェクト変数「cm」にコマンドを代入する
   Set cm = New ADODB.Command
   cm.ActiveConnection = cn
   cm.CommandText = "SELECT Customer.氏名 FROM Customer"
   ' SELECTステートメントをレコードセットで開く
   Set rs = New ADODB.Recordset
   Set rs = cm.Execute
   ' レコードセットの内容をメッセージボックスに表示する
   msg = MsgBox(rs.GetString, , rs.Source)

   ' 接続を終了する
   rs.Close: Set rs = Nothing
   cn.Close: Set cn = Nothing
End Sub

DAOで同じことを行うには、次のようにします。

Private Sub cmdDAOSelect_Click()
    Dim db      As DAO.Database
    Dim rs      As DAO.Recordset
    Dim strSQL  As String
    Dim ms      As String
    Dim msg     As String
    
    Set db = CurrentDb
    ' SQL文字列の作成
    strSQL = "SELECT Customer.氏名 FROM Customer WHERE ID<=5"
    ' レコードセットをSQLで開く
    Set rs = db.OpenRecordset(strSQL)
    
    ' レコードセットの内容をメッセージボックスに表示する
    rs.MoveFirst    ' 先頭レコードに移動
    Do While Not rs.EOF
        msg = msg + rs!氏名 & vbNewLine
        rs.MoveNext
    Loop
    MsgBox msg, vbOKOnly, strSQL

   ' 接続を終了する
   rs.Close: Set rs = Nothing
   db.Close: Set db = Nothing
   
End Sub
◆実行結果

実行結果


▼ページトップに戻る