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◆実行結果
▼ページトップに戻る