SQLの基本

Access VBA SQLの書き方4 ORDER BY 並べ替え

SQLの書き方4 ORDER BY 並べ替え

前回はINNER JOINの説明を行いましたので今回は並べ替えを行うSQL文の書き方を説明していきます。

ORDER BY

レコードの並べ替えは「ORDER BY」を使用します。

sqlkakikata15

Accessのクエリで使用する並べ替えと同様です。

SELECT フィールド名 FROM テーブル名 ORDER BY フィールド名 並べ替え順序

例 (前回のINNER JOINで使用したSQL文にORDER BYを追加します)

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* ” _
& “FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ” _
& “ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード ” _
& “WHERE T_社員マスタ2013.性別コード=’0′ ” _
& “ORDER BY T_社員マスタ2013.社員コード ASC

このSQLを実行すると、抽出結果を「社員コード」の昇順(ASC)で並べてくれます。また、降順で並べ替えたい場合は「DESC」と記述します。これらの記述を省略した場合は昇順で並べ替えられます。

では実際にプログラムを作成してみましょう。
(使用するフォームはSQLの書き方1と同じものを使用しています。)

ORDER BYを使用したプログラム例

Private Sub コマンド0_Click()

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim SQL As String

Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* ” _
& “FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ” _
& “ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード ” _
& “WHERE T_社員マスタ2013.性別コード=’0′ ” _
& “ORDER BY T_社員マスタ2013.社員コード ASC”

RS.Open SQL, CN, adOpenStatic, adLockOptimistic

If RS.EOF = False Then

Do Until RS.EOF

Debug.Print RS!社員コード & RS!名前 & RS!性別

RS.MoveNext
Loop

End If

RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing

End Sub

前回と同様に「イミディエイトウィンドウ」に抽出結果を表示します。

sqlkakikata13
社員コードで昇順(ASC)に表示されています。

sqlkakikata14
降順(DESC)にすると社員コードで降順に表示されます。

いかがでしょうか?
今回は「ORDER BY」を使用して、レコードの並べ替えを行いました。