HOME > 即効テクニック > AccessVBA > データ操作 > レコードを並べ替える

即効テクニック

データ操作

レコードを並べ替える

(Access 2000/2002/2003)
●概要●
構文  expression.Sort        取得/設定

設定項目        内容
expression      ダイナセットタイプ、またはスナップショットタイプの
                Recordsetオブジェクトを指定[省略不可]

RecordsetオブジェクトのSortプロパティを設定してレコードを並び替えます。設定値はSQLステートメントのORDER BY句の予約語「ORDER BY」以降と同じ文字列を指定します。
Recordsetオブジェクトに対してSortプロパティを設定するだけでは並べ替えは行われません。Sortプロパティを設定したオブジェクトをもとに、新規にRecordsetオブジェクトを開いた時点で並べ替えられたRecordsetオブジェクトが作成されます。
また、SQLステートメントと同様に、並べ替えを行うキーは複数設定することができ、それぞれにつき昇順(ASC)と降順(DESC)を指定できます。省略すると昇順(ASC)を指定したことになります。
ここでは「社員テーブル」をデータソースとしてダイナセットタイプのRecordsetオブジェクトを作成し、Sortプロパティを設定してからReordsetオブジェクトのOpenRecordsetメソッドを使用して並べ替えを行います。

●設定●
動作確認をするためには、Visual Basic Editorのメニューから[ツール]→[参照設定]コマンドを選択し、[参照設定]ダイアログボックスで「Microsoft DAO 3.6 Object Library」にチェックを入れてください。

●サンプル●
Public Sub SortRecordSample()
    Dim myDB As Database
    Dim myRS As DAO.Recordset
    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    '[社員テーブル]をデータソースとしてレコードセットを開く
    Set myRS = myDB.OpenRecordset("社員テーブル", dbOpenDynaset)
    'ソートキーを指定する
    '第1キー:入社年月日(降順) 第2キー:社員コード(昇順)
    myRS.Sort = "入社年月日 DESC,社員コード ASC"
    'ソートの結果をmyRSに代入する
    Set myRS = myRS.OpenRecordset
    'myRSの最後のレコードまで1件ずつレコードを表示する
    With myRS
        Do While Not .EOF
            Debug.Print !社員コード & _
                    " " & !部署コード & _
                    " " & !名前 & _
                    " " & !入社年月日 & _
                    " " & !職種
            .MoveNext  '次のレコードに移動
        Loop
    End With
    'レコードセットを閉じる
    myRS.Close
End Sub