クエリのグループ化は、グループごとに集計できる便利な機能です。
たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平均などを求めることができます。
ここでは、1つのフィールドの同じデータの数をカウントする方法を解説します。
テーブルからカウントする場合と、抽出されたデータからカウントする場合に分けて解説します。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
テーブルを基にフォームを作成
テーブル[T_商品出荷先]を作成しています。
上記テーブルを基に、帳票フォームを作成します。
テーブル[T_商品出荷先]を選択した状態で、[作成]タブの[フォーム]グループにある[その他のフォーム]から[複数のアイテム]をクリックします。
複数のアイテム
複数のレコードを一度に表示するフォームを作成します。
以下のようなフォームが作成されます。
[レイアウトビュー]表示になっています。
デザインビューに切り替えて、コントロールの大きさや位置を整えます。
ここでは、コントロールや、ラベルは、以下のような大きさにしています。フォームヘッダーの上部は[検索ボックス]などを設置するので、少し空けておきます。
コントロールの調整については、以下の記事が参考になると思います。
-
フォームのコントロールのグループ解除(レイアウトの削除)と結合・再設定
Accessでテーブルやクエリをもとにフォームを作成すると、コントロールを自由に移動できないということがあります。 それは、コントロールがグ ...
デザインビューに切り替えて、フォームのプロパティの[書式]タブで[既定のビュー]を見ると、[帳票フォーム]になっていると思います。
フォーム名は、[F_商品出荷先]としています。
フォームビューは、以下のようになっています。
フォームに非連結の検索ボックスを設置
フォームをデザインビューで開いて、フォームヘッダーに商品検索ボックスを設置します。
[フォームデザイン]タブの[コントロール]から[テキストボックス]をクリックします。
フォームヘッダーにドラッグします。
[コントロールウィザード]が表示されたら、[キャンセル]ボタンをクリックします。
ラベルは、[商品検索]と名前にします。
テキストボックスは、コンボボックスにしてプルダウンから選択できるようにしたいので、テキストボックスで右クリックして、ショートカットメニューから[コントロールの種類の変更]-[コンボボックス]をクリックします。
非連結のコンボボックスのプロパティを表示します。
キーボードから[F4]キーを押すと、プロパティを表示できます。
[選択の種類]が[コンボボックス]になっていることを確認してください。
[その他]タブの[名前]に任意の名前を入力します。ここでは[商品検索]とします。
[データ]タブを選択して、以下のように設定します。
[値集合タイプ]は[リスト]を選択して、[値集合ソース]には、商品名を入力します。
商品名テーブルがあれば、テーブルを指定して設定してください。
[値リストの編集の許可]は[いいえ]を選択します。
[値リストの編集の許可]を[はい]にしておくと、値リストの項目を追加したり、削除することができます。
フォームビューに切り替えて、コンボボックスのドロップダウンで商品名が選択できるかを確認します。
参考コンボボックスでリスト以外の値が入力されないようにする設定については、以下の記事で解説しています。
-
コンボボックスにリスト以外の値が入力されないようにするには
テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると ...
フィルター実行のコマンドボタンを作成
デザインビューに切り替えて、コマンドボタンを作成します。
[フォームデザイン]タブのコントロールから[ボタン]をクリックして、コンボボックスの右横にドラッグします。
[コントロールウィザード]が表示されたら、[キャンセル]ボタンをクリックします。
コマンドボタンのプロパティを表示して、[書式]タブの[標題]に[抽出]と入力します。
[標題]とはコマンドボタンに表示される名前になります。任意の名前でかまいません。
[その他]タブを表示して、コマンドボタンの名前を変更します。ここでは、[抽出]という名前にします。
次にマクロビルダーで[抽出]ボタンをクリックしたら、レコードを抽出できるように設定します。
[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
[マクロツール]が表示されます。
[新しいアクションの追加]の▼ボタンをクリックして、アクションメニューから[フィルターの実行]を選択します。
[フィルターの選択]でもかまいません。
そして、[Where条件式]に以下のように入力します。
入力途中で入力候補一覧(補助メニュー)が表示されると思いますので、活用してください。
そして、[上書き保存]ボタンをクリックして、[閉じる]ボタンをクリックします。
参考抽出条件を設定したクエリを作成している場合は、[フィルター実行]の[フィルター名]にクエリの名前を入力してください。
コマンドボタンのプロパティには、[埋め込みマクロ]と表示されます。
フォームビューに切り替えて、商品名でレコードが抽出できるかを確認します。
フィルターの解除ボタン
フィルターの解除ボタンも作成しておきましょう。
[抽出]ボタンを作成した時と同じように[解除]ボタンを作成して、マクロビルダーを起動して、2つのアクションを設定します。
[フィルター/並べ替えの解除]を選択します。
次に、[すべてのアクションを表示]ボタンをクリックして、[値の代入]を選択します。
[アイテム]に[商品検索]、[式]に[Null]と入力します。
フォームビューに切り替えて動作を確認しておきます。
参考これまでの内容は、以下の記事でも解説しています。あいまい検索などで抽出したい場合は、以下の記事を参考にしてください。
[解除]ボタンについても、詳細に解説しています。
-
テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)
Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...
クエリでグループ化
クエリを2個作成します。
1つは、テーブル[T_商品出荷先]のレコードで出荷先県の数を求めます。
もう1つは、抽出条件を設定したデータから、出荷先県の数を求めます。
テーブルから集計(カウント)
[作成]タブの[クエリ]グループから[クエリデザイン]をクリックします。
[テーブルの表示]ダイアログボックスが表示されますから、[T_商品出荷先]を選択して[追加]ボタンをクリックします。
参考バージョンによって異なると思いますが、[作成]タブの[クエリデザイン]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。
クエリデザインの「テーブルの追加」は作業ウィンドウに表示される
デザイングリッドにフィールドを登録して[集計行]を追加
デザイングリッドに[ID]と[出荷先]フィールドをドラッグします。
[クエリデザイン]タブの[表示/非表示]グループにある[集計]ボタンをクリックします。
デザイングリッドに[集計行]が追加されます。
[ID] フィールドで[カウント]を選択します。[出荷先]フィールドは[グループ化]のままにしておきます。
参考カウントするフィールドは、すべてのレコードが入力されているフィールドを指定します。
デザイングリッドは以下のようになります。
クエリを[データシートビュー]で確認すると、以下のようになります。クエリに名前を付けて保存します。
ここでは、[Q_商品出荷先]とします。
抽出条件を設定したデータから集計(カウント)
フォーム[F_商品出荷先]で[商品検索]の[商品名]で抽出したデータから、出荷先県の数をカウントします。
[商品名]フィールドをデザイングリッドに追加して、[集計]で[Where条件]を選択します。
[Where条件]を選択すると、自動的に[表示]はオフになります。
[商品名]の[抽出条件]には、以下のように入力します。
クエリに名前を付けて保存します。ここでは、[Q_商品抽出出荷先]とします。
フォーム[F_商品出荷先]で[商品検索]で[商品A]を選択した状態で、クエリ[Q_商品抽出出荷先]を実行すると以下のようになります。
ナビゲーションウィンドウには、以下のオブジェクトができています。
参考抽出条件を設定したクエリを作成している場合は、そのクエリを基にクエリを作成してグループ化を設定してください。
フォームに全レコード数と出荷先県の数を表示
フォーム[F_商品出荷先]をデザインビューで開いて、非連結のテキストボックスを2個挿入します。
すべてのレコード数を表示するテキストボックスと、すべての出荷先県の数を表示するテキストボックスです。
すべてのレコードの件数を表示するテキストボックスのプロパティを表示して、[データ]タブの[コントロールソース]に以下のように入力します。
テーブルやクエリの全レコード数を求めるには、Dcount関数を使用します。
DCount 関数(Microsoft)
=DCount("*","T_商品出荷先")
すべてのレコードで出荷先の県の数を表示したいテキストボックスには、コントロールソースに以下のように入力します。
=DCount("*","Q_商品出荷先")
フォームビューに切り替えて確認します。
参考DCount関数については、以下の記事でも解説しています。
-
重複データが入力されたらオリジナルのメッセージを表示する
Accessのフォームで受付番号を入力するように作成しています。 受付番号を入力したときに、既に入力済みの番号であればメッセージウィンドウを ...
-
レコード検索時に該当するレコードがない場合はメッセージを表示する
フォームに検索ボックス(テキストボックス)を設置して、管理番号を入力したら該当のレコードを抽出する仕組みを作ります。 その時、検索ボックスに ...
抽出データの件数を表示
商品名で抽出した後のレコード件数と出荷先県の数を表示するため、非連結のテキストボックスを2個挿入します。
テキストボックスの名前は、それぞれ[抽出レコード数]と[出荷先県の数]とします。
[抽出]ボタンのマクロにアクションを追加
コマンドボタン[抽出]のマクロに追加します。
[すべてのアクションを表示]をクリックして、[値の代入]を選択します。
[アイテム]に[出荷先県の数]、[式]に[DCount("*","Q_商品抽出出荷先")]と入力します。
DCount("*","Q_商品抽出出荷先")
上書き保存して閉じます。
[解除]ボタンのマクロにアクションを追加
コマンドボタン[解除]のマクロに追加します。
[値の代入]を追加して、[アイテム]に[出荷先県の数]、[式]に[Null]と入力します。
上書き保存して閉じます。
テキストボックス[抽出レコード数]のコントロールソースに入力
[抽出レコード数]のプロパティを表示して、[データ]タブの[コントロールソース]に、以下のように入力します。
テキストボックス[出荷先県の数]が空白でなければ[Count(*)]、それ以外は空白にするという意味です。
[Count(*)]でレコード数が表示されます。
Count 関数(Microsoft)
=IIf([出荷先県の数]<>"",Count(*),"")
Count関数については、以下の記事でも解説しています。
-
重複しないデータの個数とレコードの抽出件数をテキストボックスに自動表示
Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストボックスに部署数の重複しない ...
フォームビューに切り替えると以下のようになります。
商品検索で[商品A]を選択して、[抽出]ボタンをクリックすると以下のようになります。
[解除]ボタンをクリックすると、テキストボックスは空白になります。
参考グループ化による集計は、以下の記事でも解説しています。
-
クエリでデータをグループ化して集計
クエリのデザイングリッドに[集計]セルを表示すると、データをグループ化して、グループごとに集計することができます。 製品ごとに数量や売上の合 ...
-
グループ化で重複レコードを削除したテーブルを作成
Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...