サンプルプロシージャでは、既存のクエリの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」をチェックします。