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