Accessの分割フォームのデータシートビューには、Excelのフィルターと同じようにフィルターボタンがあり、Excelの操作と同じように様々な抽出が可能です。
既定でこの機能がついているので、とても便利です。
-
分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方
Accessでは、画面を2つに分け[単票フォーム]と[データシート]を同時に表示できる[分割フォーム]というのがあります。Access200 ...
ただ、フィルター機能は便利なのですが、空白を含むフィールドでは注意が必要です。
-
フィルターの空白を含む複数選択で抽出数が異なる
Access2007からの新機能だと思うですが、テーブルやデータシートビューでフィルターが使用できます。 Excelのフィルターと同じように ...
Accessは、一人で使用する場合は問題がなくても、共有で使用する場合は、ユーザーから次々と追加要求があります。
今回はコンボボックスから商品を抽出できるようにしてほしいという要望があったので、作成方法を記しておきます。
参考フィルターボタンをクリックしても、リストが表示されない場合があります。
これは、[Accessのオプション]の設定で変更することで解決できます。以下の記事で解説しています。
商品テーブルの確認
商品テーブルは下のようになっています。
テーブル名は、[T商品]です。
これをコンボボックスのリストにします。
非連結のコンボボックスを作成
分割フォームをデザインビューで開いて、非連結のコンボボックスを作成します。
非連結とは、どのフィールドにも紐づけされていないということです。
[デザイン]タブの[コントロール]にある[コンボボックス]をクリックして、フォームの任意の位置でクリックします。
コントロールウィザードがオンになっているかを確認
今回は、コンボボックスウィザードを使用して作成します。
ウィザードが表示されない場合は、[コントロールウィザードの使用]が無効になっていると思いますので、オンにしてください。
参考コンボボックスは、ウィザードを使用しなくても作成できます。
コンボボックスの値を別のテーブルまたはクエリから取得する
[コンボボックスの値を別のテーブルまたはクエリから取得する]を選択して[次へ]ボタンをクリックします。
テーブルの選択
テーブルの中から[T商品]を選択して[次へ]ボタンをクリックします。
フィールドの選択
[商品ID]と[商品]フィールドを中央の[>]ボタンをクリックして追加します。
[次へ]ボタンをクリックします。
並べ替えの指定
[商品ID]の昇順で並べるため、下のように設定します。
[次へ]ボタンをクリックします。
キー列を表示しない
[キー列を表示しない(推奨)]のチェックボックスはオンのまま[次へ]ボタンをクリックします。
後の作業で使用する
[後の作業で使用する]を選択して[次へ]ボタンをクリックします。
ラベルの名前付け
ラベルに付ける名前を入力します。
[完了]ボタンをクリックします。
フォームには下のように表示されます。
コンボボックスのプロパティで設定
非連結のコンボボックスに名前を付けます。
[F4]キーを押して、コンボボックスのプロパティを表示します。
[その他]タブの[名前]には[コンボ90](コンボ+数字)などの名前が自動で付けられていると思いますが、分かりやすい名前にします。
ここでは[商品選択コンボ]とします。
プロパティの[書式]タブです。
[列数]は[2]、[列幅]は[0cm;2.54cm]となっています。
プロパティの[データ]タブの[値集合ソース]の[...]ボタンをクリックしてクエリビルダーを表示すると、
下のようになっているのを確認することができます。
ウィザードで設定した内容です。
[データ]タブの[連結列]を[2]に変更します。
返す値を[商品ID]ではなく、[商品]にするためです。
非連結の[商品選択コンボ]という名前を付けたコンボボックスを選択したまま、プロパティの[イベント]タブにある[更新後処理]の[...]ボタンをクリックします。
コードビルダーの起動
[ビルダーの選択]から[コードビルダー]を選択して、[OK]ボタンをクリックします。
イベントプロシージャの更新後処理に下のように入力します。
Me.Filter = "商品='" & 商品選択コンボ & "'"
Me.FilterOn = True
入力するのは、赤く囲まれた箇所ですね。
フォームビューに切り替えて、コンボボックスで商品を選択してみます。
データシートビューには、コンボボックスの商品が抽出されます。
参考抽出されたレコードの件数を自動的にテキストボックスに表示することもできます。
-
重複しないデータの個数とレコードの抽出件数を自動表示
Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストに部署数の重複しない個数を表 ...
フィールドの非表示
分割フォームのデータシートには、[商品選択]フィールドが表示されますが、これは不要なので、右クリックして[フィールドの非表示]を選択します。
参考フィールドの非表示設定は、単票フォームの操作に影響することもあります。以下の記事で解説しています。
-
分割フォームのデータシートのフィールドを非表示にする時の注意点
Accessの分割フォームでは、データシートのフィールドは簡単に非表示に設定することができます。 ですが、データシートでフィールドを非表示に ...
フィルターの解除ボタンを作成
抽出したあと、フィルターを解除するためのボタンも作成します。
[デザイン]タブの[ボタン]をクリックして作成します。
コマンドボタンウィザードが表示されたら、[キャンセル]ボタンをクリックして閉じます。
コマンドボタンのプロパティを表示して、名前を[フィルター解除]とします。
イベントプロシージャのクリック時イベントに下のように入力します。
Me.FilterOn = False
フィルター解除時に商品選択コンボボックスの値も空白にしたいのであれば、下のように追記してください。
Me.商品選択コンボ.Value = ""
フォームビューに切り替えて、[フィルター解除]ボタンをクリックします。
フィルターが解除されます。
フィルター解除ボタンについて
[フィルター解除]ボタンは、分割フォームの[データシートビュー]でフィルターボタンを使用して抽出したレコードも解除されます。[担当者]フィールドから[愛野]を選択します。
[担当者]フィールドで[愛野]のレコードが抽出されます。
このフィルターを解除するときも[フィルター解除]ボタンをクリックして解除することが可能です。
関連以下のページも参考になると思います。
-
フォームのレコードをボタンをクリックして並べ替える
Accessでは、分割フォームをよく利用しています。 分割フォームは、フォームビュー(単票フォーム)とデータシートビューが同時に表示され、E ...
-
検索と置換ダイアログボックスをボタンで起動
Accessでレコードの検索を行う場合、[検索と置換」ダイアログボックス表示して使用することは多いと思います。 この[検索と置換]ダイアログ ...
-
ウィザードを使って検索用コンボボックスを簡単作成
Accessのフォームで検索用コンボボックスを作成する方法です。 コンボボックス作成ウィザードを使って簡単に作成することができます。 テーブ ...
コンボボックス内にカーソルをおくだけで、リストを表示するようにすることもできます。
-
コンボボックス内にカーソルを置いてリストを表示するには
Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...
テキストボックスを使って、部分検索で抽出する方法も解説しています。
-
テキストボックスでレコード抽出(コードビルダーを起動して設定)
Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...