Google検索

リンクユニット

Windows8 & Office2013 Access2013

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

投稿日:2017年1月7日 更新日:

Accessの分割フォームのデータシートビューには、Excelのフィルターと同じようにフィルターボタンがあり、Excelの操作と同じように様々な抽出が可能です。

既定でこの機能がついているので、とても便利です。

ブログのAccess2007の分割フォームでも紹介しています。

分割フォームのフィルター機能は便利なのですが、空白を含むフィールドでは注意が必要です。

フィルターの空白を含む複数選択で抽出数が違う

分割フォーム

Accessは、一人で使用する場合は問題がなくても、共有で使用する場合は、ユーザーから次々と追加要求があります。

今回はコンボボックスから商品を抽出できるようにしてほしいとのことだったので、作成方法を記しておきます。

商品テーブルの確認

商品テーブルは下のようになっています。

テーブル名は、[T商品]です。

商品テーブル

非連結のコンボボックスを作成

分割フォームをデザインビューで開いて、非連結のコンボボックスを作成します。

非連結とは、どのフィールドにも紐づけされていないということです。

[デザイン]タブの[コントロール]にある[コンボボックス]をクリックして、フォームの任意の位置でクリックします。

コンボボックス

コントロールウィザードがオンになっているかを確認

今回は、コンボボックスウィザードを使用して作成します。

ウィザードが表示されない場合は、[コントロールウィザードの使用]が無効になっていると思いますので、オンにしてください。

参考コンボボックスは、ウィザードを使用しなくても作成できます。

コントロールウィザードの使用

コンボボックスの値を別のテーブルまたはクエリから取得する

[コンボボックスの値を別のテーブルまたはクエリから取得する]を選択して[次へ]ボタンをクリックします。

コンボボックスの値を別のテーブルまたはクエリから取得する

テーブルの選択

テーブルの中から[T商品]を選択して[次へ]ボタンをクリックします。

テーブルの中から[T商品]を選択

フィールドの選択

[商品ID]と[商品]フィールドを中央の[>]ボタンをクリックして追加します。

[次へ]ボタンをクリックします。

[商品ID]と[商品]フィールドを追加

並べ替えの指定

[商品ID]の昇順で並べるため、下のように設定します。

[次へ]ボタンをクリックします。

[商品ID]の昇順

キー列を表示しない

[キー列を表示しない(推奨)]のチェックボックスはオンのまま[次へ]ボタンをクリックします。

キー列を表示しない(推奨)

後の作業で使用する

[後の作業で使用する]を選択して[次へ]ボタンをクリックします。

後の作業で使用する

ラベルの名前付け

ラベルに付ける名前を入力します。

[完了]ボタンをクリックします。

ラベルに付ける名前を入力

フォームには下のように表示されます。

フォームの詳細

プロパティの設定

非連結のコンボボックスに名前を付けます。

[その他]タブの[名前]には[コンボ90](コンボ+数字)などの名前が自動で付けられていると思いますが、分かりやすい名前にします。

ここでは[商品選択コンボ]とします。

コンボボックスの名前

プロパティの[書式]タブです。

[列数]は[2]、[列幅]は[0cm;2.54cm]となっています。

書式タブ

プロパティの[データ]タブの[値集合ソース]の[...]ボタンをクリックしてクエリビルダーを表示すると、

データタブ

下のようになっているのを確認することができます。

ウィザードで設定した内容です。

クエリビルダー

[データ]タブの[連結列]を[2]に変更します。

返す値を[商品ID]ではなく、[商品]にするためです。

連結列

非連結の[商品選択コンボ]という名前を付けたコンボボックスを選択したまま、プロパティの[イベント]タブにある[更新後処理]の[...]ボタンをクリックします。

更新後処理

コードビルダーの起動

[ビルダーの選択]から[コードビルダー]を選択して、[OK]ボタンをクリックします。

コードビルダーの選択

イベントプロシージャの更新後処理に下のように入力します。

Me.Filter = "商品='" & 商品選択コンボ & "'"
Me.FilterOn = True

入力するのは、赤く囲まれた箇所ですね。

イベントプロシージャ

フォームビューに切り替えて、コンボボックスで商品を選択してみます。

データシートビューには、コンボボックスの商品が抽出されます。

コンボボックスで抽出

フィールドの非表示

分割フォームのデータシートには、[商品選択]フィールドが表示されますが、これは不要なので、右クリックして[フィールドの非表示]を選択します。

フィールドの非表示

フィルターの解除ボタンを作成

抽出したあと、フィルターの解除するためのボタンも作成します。

[デザイン]タブの[ボタン]をクリックして作成します。

コマンドボタンウィザードが表示されたら、[キャンセル]ボタンをクリックして閉じます。

コマンドボタンのプロパティを表示して、名前を[フィルター解除]とします。

イベントプロシージャのクリック時イベントに下のように入力します。

Me.FilterOn = False

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

Me.商品選択コンボ.Value = ""

フィルター解除ボタンのイベントプロシージャ

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

フィルターが解除されます。

フィルタ解除ボタン

フィルター解除ボタンについて

[フィルター解除]ボタンは、分割フォームの[データシートビュー]でフィルターボタンを使用して抽出したレコードも解除されます。

[担当者]フィールドから[愛野]を選択します。

担当者の抽出

[担当者]フィールドで[愛野]のレコードが抽出されます。

このフィルターを解除するときも[フィルター解除]ボタンをクリックして解除することが可能です。

フィルター解除

関連以下のページも参考になると思います。

フォームのレコードを並べ替える

Accessの分割フォームをよく利用しています。 フォームビューとデータシートビューが同時が表示され、Excelのフィルターと同じようにフィ ...

続きを見る

検索と置換ダイアログボックスをボタンで起動

Accessでレコードの検索を行う時、[検索と置換」ダイアログボックスを使用することは多いと思います。 リボンの検索ボタン 検索ボタンはリボ ...

続きを見る

ウィザードを使って検索用コンボボックスを簡単作成

Accessのフォームで検索用コンボボックスを作成する方法です。 コンボボックス作成ウィザードを使って簡単に作成することができます。 テーブ ...

続きを見る

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

テキストボックスでレコード抽出

Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字から部分一致でレコードを抽出する方法を紹介しま ...

続きを見る

おすすめ記事と広告

推奨管理人一押しのテキストです。私もこれで学習しました。

-Windows8 & Office2013 Access2013

Copyright © 2001-2018 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2018 AllRights Reserved Powered by AFFINGER4.