HOME > 即効テクニック > AccessVBA > クエリ・SQL > 既存のクエリのSQLステートメントにORDER BY句(並べ替え)を追加する

即効テクニック

クエリ・SQL

既存のクエリのSQLステートメントにORDER BY句(並べ替え)を追加する

(Access 2000/2002)
サンプルプロシージャでは、既存のクエリのSQLステートメントを取得して、ORDER BY句を追加してからクエリを実行しています。
クエリ「クエリ1」は、売上データを抽出するクエリです。
抽出されたレコードを、「売上金額の降順、商品番号の昇順」で並べ替えるためのORDER BY句をSQLプロパティで取得したSQLステートメントに追加しています。
但し、既にORDER BY句が指定されている場合は追加しません。
Sub Sample()

    Dim db    As Database
    Dim qdef  As QueryDef
    Dim MySql As String
    Dim myStr As String

    Set db = CurrentDb()
    Set qdef = db.QueryDefs("クエリ1")

    MySql = qdef.SQL
    
    myStr = " ORDER BY 売上金額 DESC, 商品番号;"
    
    If InStr(MySql, "ORDER BY") = 0 Then

        MySql = Left(MySql, InStr(MySql, ";") - 1) & myStr
        
    End If
    
    qdef.SQL = MySql

    DoCmd.OpenQuery "クエリ1"

End Sub
InStr関数は、ある文字列の中から指定した文字列を検索し、最初に見つかった文字位置(先頭からその位置までの文字数)を返す文字列処理関数です。
Left関数は、文字列の左端から指定した文字数分の文字列を返します。
OpenQueryメソッドは、「クエリを開く」アクションを実行します。
DAOを使用するには、[ツール(T)]メニューの[参照設定(R)]をクリックすると表示される[参照設定]ダイアログボックスで、「Microsoft DAO 3.6Object Library」をチェックします。