AccessのVBAでSQLのSELECT ORDER BYを使い複数フィールドを昇順・降順の両方でレコードを抽出する|フォーム実行例

複数のフィールドは半角のコンマ(,)で区切ります

降順で並べ替えたいフィールドに「DESC」を付けます。
複数のフィールドは半角のコンマ(,)で区切ります。

例: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 製品名 DESC , 製品コード , 単価 "
この場合、「製品名」を降順で、次に「製品コード」次に「単価」の順で製品Noを取り出します。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「ORDER BY 打席(降順) 安打」ボタンをクリックすると、野球データベーステーブルから、打数を降順で、次に安打を昇順で並び替えレコードを表示します。

■打数を降順で安打を昇順で並び替え抽出した画面
降順・昇順

・どちらも昇順で並び変えた結果は下記になります。
 比較してください。
16: 100: 45
13: 130: 20
10: 130: 30
11: 150: 25

[野球データベース テーブル]
選手ID 打数  安打
10    130   30
11    150   25
13    130   20
16    100   45
野球テーブル

[コード]
Option Compare Database

Private Sub コマンド8_Click()
    Dim SQL As String
    Dim rs As Recordset
    Me!テキスト1 = Null
    SQL = "SELECT 選手ID,打数,安打 FROM 野球データベース ORDER BY 打数 DESC,安打"
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs![選手ID] & ": " & rs![打数] & ": " & rs![安打] & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

サンプルソフトのダウンロード

BackHome BackSQL Tips

Copyright(C) FeedSoft