Windows8 & Office2013 Access2013

Print Friendly, PDF & Email

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

投稿日: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 = "商品='" & syohin & "'"
Me.FilterOn = True

入力するのは、赤く囲まれた箇所ですね。
イベントプロシージャ

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

フィールドの非表示

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

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

抽出したあと、フィルターの解除するためのボタンも作成します。
[デザイン]タブの[ボタン]をクリックして作成します。
コマンドボタンウィザードが表示されたら、[キャンセル]ボタンをクリックして閉じます。

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

Me.FilterOn = False

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

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

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


フィルター解除は、分割フォームのデータシートビューでフィルターボタンを使用して抽出したレコードも解除することができます。[担当者]フィールドから[愛野]を選択します。
担当者の抽出

[担当者]フィールドで[愛野]のレコードが抽出されます。このフィルターを解除するときも[フィルター解除]ボタンをクリックして解除することが可能です。
フィルター解除

関連以下のページも参考になると思います。
分割フォームの列幅を保存するには

分割フォームの列幅を保存するには

Accessで分割フォームをよく利用しています。 単票フォームとデータシートが一つのフォームに作成できて便利です。 ですが、分割フォームを作 ...

続きを見る

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

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

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

続きを見る

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

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

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

続きを見る

検索用コンボボックスの作成

検索用コンボボックスの作成

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

続きを見る

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

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

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

続きを見る

解決できないことは【teratail】に質問してみましょう。

参考Officeのバージョンによって操作が異なる場合があります。以下の記事で、お使いのOfficeのバージョンを確認する方法を解説しています。

Office(Word、Excel、PowerPointなど)のバージョンを確認する方法

Microsoft Officeも時を得て、大きく様変わりしてきました。トラブルを解決しようとするとき、あるいは、何かの操作を探すときなど、 ...

続きを見る

おすすめ記事と広告

関連記事

長いパスでもクリックで開くには

Outlookのテキストメールで長いURLや、長いパスでもクリックで開く方法です。 [ファイル]タブをクリックして、[オプション]をクリック ...

別フィールドのデータをコピーする

Accessで、別のテーブルの値をコピーする方法です。 [商品価格A]と[商品価格B]という2つのテーブルがあります。 更新クエリの作成 [ ...

フォームのフィルター実行後のデータをレポートへ

Accessのフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。 分割フォームの作成 テーブルや ...

PowerPivotウィンドウに数式列を追加する

Excel2013の[POWERPIVOT]タブにある[管理]ボタンをクリックして現れるウィンドウに数式列を追加する方法を紹介します。 下の ...

分類項目の設定

Office2013でメッセージの分類項目に色をつけて割り当てる方法です。 分類項目で色分けをしておくと、目的のメールを探しやすくなりますし ...

-Windows8 & Office2013 Access2013

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

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