HOME > 即効テクニック > AccessVBA > クエリ・SQL > 検索結果を並べ替える

即効テクニック

クエリ・SQL

検索結果を並べ替える

(Access 2000/2002)
●概要●
構文  ORDER BYフィールド [ASC|DESC]

ORDER BY句を使用してレコードの検索結果を並べ替えます。既定は昇順(ASC)です。
サンプルでは2つのSELECTステートメントを実行し、指定したキーでソートして検索します。1つ目はSELECTステートメントでは昇順/降順の指定を省略していますが、既定で昇順に検索されます。
●サンプル●
'検索結果を並べ替える
Public Sub Sample()

    Dim myDB As Database
    Dim myRS As DAO.Recordset
    Dim mySQL1, mySQL2 As String

    'SQLステートメントを定義する
    mySQL1 = "SELECT * FROM 社員テーブル ORDER BY 入社年月日;"
    mySQL2 = "SELECT * FROM 社員テーブル ORDER BY 入社年月日 DESC;"

    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    'SQLステートメントを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset(mySQL1, dbOpenDynaset)
    'レコードセットの内容を表示する
    Debug.Print "*** 入社年月日の昇順 ***"
    Do Until myRS.EOF
        Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
               & myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
        myRS.MoveNext
    Loop
    'SQLステートメントを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset(mySQL2, dbOpenDynaset)
    'レコードセットの内容を表示する
    Debug.Print "*** 入社年月日の降順 ***"
    Do Until myRS.EOF
        Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
               & myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
        myRS.MoveNext
    Loop
    'レコードセットを閉じる
    myRS.Close

End Sub
●補足1●
結果は[イミディエイト]ウィンドウに表示されます。

●補足2●
NULL値を含むフィールドをソートした場合、NULL値の出力は、昇順(ASC)の場合は先頭に、降順(DESC)の場合は最後になります。