おすすめ記事

同じカテゴリー

コンボボックスでレコードの抽出



Accessの分割フォームのデータシートビューには、Excelのフィルターと同じようにフィルタボタンがあり、Excelの操作と同じように様々な抽出が可能です。既定でこの機能がついているので、とても便利です。
ブログのAccess2007の分割フォームでも紹介しています。
分割フォームのフィルター機能は便利なのですが、空白を含むフィールドでは注意が必要です。
フィルターの空白を含む複数選択で抽出数が違う
分割フォーム
Accessは、一人で使用する場合は問題がなくても、共有で使用する場合は、ユーザーから次々と追加要求があります。今回はコンボボックスから商品を抽出できるようにしてほしいとのことだったので、作成方法を記しておきます。

商品テーブルは下のようになっています。テーブル名は、[T商品]です。
商品テーブル
分割フォームをデザインビューで開いて、非連結のコンボボックスを作成します。
[デザイン]タブの[コントロール]にある[コンボボックス]をクリックして、フォームの任意の位置でクリックします。
コンボボックス
今回は、コンボボックスウィザードを使用して作成してみます。
ウィザードが表示されない場合は、[コントロールウィザードの使用]が無効になっていると思いますので、オンにしてください。※コンボボックスは、ウィザードを使用しなくても作成できます。
コントロールウィザードの使用
[コンボボックスの値を別のテーブルまたはクエリから取得する]を選択して[次へ]ボタンをクリックします。
コンボボックスの値を別のテーブルまたはクエリから取得する

スポンサーリンク

テーブルの中から[T商品]を選択して[次へ]ボタンをクリックします。
テーブルの中から[T商品]を選択
[商品ID]と[商品]フィールドを中央の[>]ボタンをクリックして追加します。
[次へ]ボタンをクリックします。
[商品ID]と[商品]フィールドを追加
[商品ID]の昇順で並べるため、下のように設定します。[次へ]ボタンをクリックします。
[商品ID]の昇順
[キー列を表示しない(推奨)]のチェックボックスはオンのまま[次へ]ボタンをクリックします。
キー列を表示しない(推奨)
[後の作業で使用する]を選択して[次へ]ボタンをクリックします。
後の作業で使用する
ラベルに付ける名前を入力します。[完了]ボタンをクリックします。
ラベルに付ける名前を入力
フォームには下のように表示されます。
フォームの詳細
非連結のコンボボックスに名前を付けます。[その他]タブの[名前]には[コンボ90](コンボ+数字)などの名前が自動で付けられていると思いますが、分かりやすい名前にします。ここでは[商品選択コンボ]とします。
コンボボックスの名前
プロパティの[書式]タブです。[列数]は[2]、[列幅]は[0cm;2.54cm]となっています。
書式タブ
プロパティの[データ]タブの[値集合ソース]の[...]ボタンをクリックしてクエリビルダーを表示すると、
データタブ
下のようになっているのを確認することができます。ウィザードで設定した内容です。
クエリビルダー
[データ]タブの[連結列]を[2]に変更します。返す値を[商品ID]ではなく、[商品]にするためです。
連結列
非連結の[商品選択コンボ]という名前をつけたコンボボックスを選択したまま、プロパティの[イベント]タブにある[更新後処理]の[...]ボタンをクリックして、
更新後処理
[ビルダーの選択]から[コードビルダー]を選択して、[OK]ボタンをクリックします。
コードビルダーの選択
イベントプロシージャの更新後処理に下のように入力します。

Me.Filter = "商品='" & syohin & "'"
Me.FilterOn = True

入力するのは、赤く囲まれた箇所ですね。
イベントプロシージャ
フォームビューに切り替えて、コンボボックスで商品を選択してみます。
コンボボックスの商品が抽出されます。
コンボボックスで抽出
分割フォームのデータシートには、[商品選択]フィールドが表示されますが、これは不要なので、右クリックして[フィールドの非表示]を選択します。
フィールドの非表示
抽出したあと、フィルタの解除するためのボタンも作成します。
[デザイン]タブの[ボタン]をクリックして作成します。
コマンドボタンウィザードが表示されたら、[キャンセル]ボタンをクリックして閉じます。

コマンドボタンのプロパティを表示して、名前を[フィルター解除]とします。
イベントプロシージャのクリック時イベントに下のように入力します。
Me.FilterOn = False

フィルター解除時に商品選択コンボボックスの値も空白にしたいのであれば、下のように追記してください。
Me.商品選択コンボ.Value = ""

フォームビューに切り替えて、[フィルター解除]ボタンをクリックします。フィルターが解除されます。
フィルタ解除ボタン


フィルタ解除は、分割フォームのデータシートビューでフィルタボタンを使用して抽出したレコードも解除することができます。[担当者]フィールドから[愛野]を選択します。
担当者の抽出
[担当者]フィールドで[愛野]のレコードが抽出されます。このフィルターを解除するときも[フィルター解除]ボタンをクリックして解除することが可能です。
フィルター解除
関連ページです。
分割フォームの列幅を保存するには
フォームのレコードを並べ替える
検索と置換ダイアログボックスをボタンで起動
検検索用コンボボックスの作成

テキストボックスを使って、部分検索と抽出する方法も解説しています。
テキストボックスでレコード抽出

トラブルをすぐに解決したいならteratail

おすすめ記事

シェアする