MS Access Tips/Sample and VBA and Blog customize etc...

コンボボックス(リストボックス)のリストに"(すべて)"を追加する

非連結のコンボボックスで、リストはマスタテーブルと連結させてます。このコンボボックスの値をパラメータクエリの抽出条件にしてます。このリストに"(すべて)"というアイテムを追加して、それを選択した場合はすべてのレコードが抽出されるようにしたいです。

これもよく見かける質問です。方法もいろいろありますが、今回は、VBAを使わずにプロパティ設定だけで実現する方法を紹介します。

コンボボックスのリストに(すべて)

難易度:

仕様

テーブル構成
テーブル フィールド
商品マスタ 商品ID メーカーID 商品名 単価
メーカーマスタ メーカーID メーカー名 備考

「商品マスタ」よりパラメータクエリを作成。

このクエリをレコードソースとするフォームを作成。名前は、商品一覧。

フォームヘッダーにコンボボックスを配置。名前は、cmbメーカー選択。このコンボボックスの「更新後処理」で再クエリすることによって、メーカーで抽出。

このコンボボックスに"(すべて)"というリストを追加して、これを選択した場合は、すべてのレコードを表示する。

実装

cmbメーカー選択 の設定
プロパティ 設定値
コントロールソース  
連結列 1
値集合タイプ テーブル/クエリ
値集合ソース ※下記のSQL 
列数 2
列幅 0cm

値集合ソースのSQL

ユニオンクエリで "(すべて)" を固定値にしたテーブルと元のテーブルを連結します。UNION とすることで重複値は一つにまとめられます。

メーカーID は数値型で 1以上として、0 を固定値にしてます。ORDER BY 1 は1列目で昇順に並び替えるという意味です。ですので、"(すべて)" がリストの先頭に表示されます。最後に表示したい場合は、メーカーIDの最大値より大きい固定値にします。

"(すべて)" に対応させるためにフォームのレコードソースのクエリは、

レコードソースには抽出条件を設定せずに、VBAでフィルタをかける場合は、


拍手する

2 Comments

タジまはる says...""

はじめまして、どういう経緯か解りませんが、自分のブログを訪問していただきありがとうございました。
私はPCに疎いほうなので記事を読んでもあまり理解できませんでした…。
なんというか、すごいですね。

2010.04.01 17:59 | URL | #bo5zNM.6 [edit]
hatena says..."共有プラグイン"

タジまはる さん、こんばんは。
拙作の共有プラグイン「サイズを記憶するフォントサイズ変更ボタン」をご利用いただいており、コメントもいただいていたので、訪問させていただきました。
(作者にはリンクが公開されるので)

で、ちょっとアドバイスですが、プラグインの HTML編集で、

var chWidth = 1; //増減幅

の部分の数字を 5 ぐらいにするとサイズの変化が分かりやすいかも。

var chWidth = 5; //増減幅

2010.04.01 18:52 | URL | #- [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/248-d5f1fc34
該当の記事は見つかりませんでした。