画面のメインとしてリストボックスがあり、そこに表示されているリスト項目をコンボボックスの選択に応じて並べ替える方法です。
ここでは例として次のようなフォームがあるとします。

リストボックスは普通にテーブル等を値集合ソースとして作ります。コントロールの名前は「lst商品マスタ」とします。
そして、画面上部に並べ替え項目を選択するためのコンボボックスを配置します。
ここでは下記のようなプロパティを設定しておきます。
- 名前 → cbo並べ替え
- 値集合ソース → 1;商品コード順;2;商品名順;3;販売単価順;4;仕入単価順
- 値集合タイプ → 値リスト
- 入力チェック → はい
- 列数 → 2
- 列幅 → 0cm
そして、このコンボボックスの「AfterUpdate/更新後処理」プロシージャを次のようにします。
Private Sub cbo並べ替え_AfterUpdate()
'[並べ替え]コンボボックスの更新後処理
Const cstrRowSrcSQL As String = "SELECT * FROM 商品マスタ"
'リストボックスの値集合ソースのSQL文を切り替え
Me!lst商品マスタ.RowSource = cstrRowSrcSQL & " ORDER BY " & _
Choose(Me!cbo並べ替え, "商品コード", "商品名", "販売単価 DESC", "仕入単価")
End Sub
ここでは、リストボックスに表示されるデータ元である値集合ソースについて、テーブル名やクエリ名だけではなく、SQL文で定数cstrRowSrcSQLに固定で設定しておきます。「SELECT ~ FROM ~」という構文とし、WHERE句等は含んでいてもよいですが、ORDER BY句は含めないようにしておきます。
そして、選択されたコンボボックスの値に応じたORDER BY句を追記し、そのSQL文全体をリストボックスの「RowSource/値集合ソース」プロパティに代入しています。
実行例:
- [商品名順]選択時

- [販売単価順]選択

- [商品コード順]選択
|