ADOによりSQL文を実行して目的のレコードを取得するにはOpenメソッドを使用する際にSQL文を指定します。
Dim レコードセット変数 As New ADODB.Recordset
レコードセット変数.Open SQL文, CurrentProject.Connection
以下の例では名簿テーブルよりOpenメソッドによりSQL文を実行し、テーブルの氏名フィールドのレコードを全て表示し、Closeメソッドで閉じています。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT * FROM 名簿"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では社員名簿テーブルから性別が男であるレコードから氏名を取得します。性別など文字列を条件式として使用するには文字列を ' で囲みます。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT 社員名簿.氏名 FROM 社員名簿" _
& " WHERE 社員名簿.性別='男';"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では社員名簿テーブルから生年月日が2009/01/01以前のレコードから氏名と生年月日を取得します。なお、生年月日など年月日を条件式として使用するには年月日を # で囲みます。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT 社員名簿.氏名, 社員名簿.生年月日 FROM 社員名簿" _
& " WHERE 社員名簿.生年月日 < #2009/01/01#;"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では社員名簿テーブルから部門を重複することなく取得します。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT DISTINCT 社員名簿.所属部門 FROM 社員名簿;"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!所属部門
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では生年月日が1980/01/01以前で性別が男であるレコードから氏名フィールドを取得します。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT 社員名簿.氏名 FROM 社員名簿" _
& " WHERE 社員名簿.生年月日 < #2009/01/01#" _
& " AND 社員名簿.性別='男';"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では所属部門が経理と営業であるレコードの氏名を取得します。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT 社員名簿.氏名 FROM 社員名簿 " _
& " WHERE 社員名簿.所属部門 IN ('経理', '営業');"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では社員名簿テーブルから生年月日が1980/01/01〜1990/12/31の範囲にあるレコードを取得します。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT * FROM 社員名簿" _
& " WHERE 社員名簿.生年月日" _
& " BETWEEN #1980/01/01# AND #1990/12/31#;"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では氏名の最後が"郎"であるレコードから氏名を取得します。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT * FROM 社員名簿" _
& " WHERE 社員名簿.氏名 LIKE '%郎';"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
以下の例では氏名を降順でソートした結果を取得します。
Sub Sample()
Dim strSQL As String
strSQL = "SELECT * FROM 社員名簿 ORDER BY 社員名簿.氏名 DESC;"
Dim rs As New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection
Do Until rs.EOF
Debug.Print rs!氏名
rs.MoveNext
Loop
rs.Close
End Sub
ADOとは | レコードセットの作成(Open) | レコードセットの読み取り(Move) | レコードの検索(Find) | レコードの更新(Update) | レコードの追加(AddNew) | レコードの削除(Delete) | レコードの抽出(Filter) | レコードの並び替え(Sort) | SQL文の実行