#246 クエリのトップ値プロパティをVBAから変更するには? クエリ、VBA

クエリでは、そのデザインビューにおいて、プロパティシートで"トップ値"プロパティを設定することによって、上位何件かのレコードあるいは上位何パーセントかのレコードだけを抽出表示することができます。それをVBAを使って任意に設定変更したい場合には、QueryDefオブジェクトに"トップ値"を設定できるプロパティはありませんので、SQL文を直接書き換えることになります。それには、次のようなコードを実行します。なお、ここでは"qsel売上上位"という名前のクエリを対象としていますが、あらかじめ適当な"トップ値"プロパティが設定されていることが前提となります。また、"商品別売上実績.商品コード"という部分は、実際に適用するクエリによって異なりますので、SQLビューなどを参考に適宜書き換えてください。

Dim dbs As Database
Dim qdf As QueryDef
Dim strSQL As String
Dim strSQLTmp As String
Dim intDelm As Integer

Set dbs = CurrentDb

'クエリ定義を開く
Set qdf = dbs.QueryDefs("qsel売上上位")

'SQL文を取得
strSQL = qdf.SQL
'SQL文でSELECTされる最初のフィールド名の位置を探す
intDelm = InStr(strSQL, "商品別売上実績.商品コード")
'最初のフィールド名以降のSQL文を変数に保存
strSQLTmp = Mid$(strSQL, intDelm)
'SQL文の先頭のTOP句を組み立ててSQL文を再構成
strSQL = "SELECT " & "TOP 5 " & strSQLTmp         'トップ5の場合
'strSQL = "SELECT " & "TOP 20 " & strSQLTmp        'トップ20の場合
'strSQL = "SELECT " & "TOP 10 PERCENT " & strSQLTmp 'トップ10%の場合

'再構成されたSQL文をクエリに設定
qdf.SQL = strSQL

qdf.Close
dbs.Close

'クエリを開いて確認
DoCmd.OpenQuery "qsel売上上位"
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved