Accessのクエリでレコードを抽出する方法です。
クエリの抽出条件には、フォームのテキストボックスの値を指定することができます。
また、クエリを作成しておくと、それを埋め込みマクロに設定することもできます。
クエリを作成しなくても、フォームに作成したボタンのイベントプロシージャや、埋め込みマクロに記述してレコードの抽出を行うこともできますが、クエリで抽出条件を設定すると、抽出したレコードを出力することができます。
参考埋め込みマクロと、イベントプロシージャでレコードを抽出する方法は、以下で解説しています。
-
テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)
Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...
-
テキストボックスでレコード抽出(コードビルダーを起動して設定)
Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...
ここでのフォームの表示は、[タブ付きドキュメント](既定)です。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
テーブルから帳票フォームを作成
テーブルを基に帳票フォームを作成します。
テーブルの確認
[T_商品]という名前のテーブルがあります。このテーブルを基にフォームを作成します。
以下は、テーブルのデザインビューです。[表示価格]と[標準価格]フィールドのデータ型は、[通貨型]にしています。
帳票フォームの作成
テーブル[T_商品]を選択して、[作成]タブの[フォーム]グループにある[その他のフォーム]から[複数のアイテム]を選択します。
[複数のアイテム]を選択すると、[帳票フォーム]が作成されます。
複数のアイテム
複数のレコードを一度に表示するフォームを作成します。
以下のようにフォームがレイアウトビューで表示されます。
レイアウトビューのまま、コントロールの大きさなどを調整します。
レイアウトビューでの編集は、実際のレコードのデータを表示したまま調整できるので、コントロールの幅などを調整する時は便利です。
-
レイアウトビューでフォームのコントロールをカスタマイズ
Accessのフォームには、デザインビュー、レイアウトビュー、フォームビューの3つの表示方法があります。 コントロールのサイズや位置などを調 ...
必要であれば、デザインビューに切り替えて、調整します。
ここでは、ヘッダーのタイトルなども変更して、以下のようなフォームを作成しました。
フォームは、[F_表示価格抽出]という名前を付けて保存します。
参考クエリは、ウィザードを使用して作成することもできます。ウィザードの場合は、[表形式]を選択すると、[帳票フォーム]を作成できます。
フォームに非連結のテキストボックスを作成
作成した帳票フォーム[F_表示価格抽出]をデザインビューで開きます。
[デザイン]タブの[コントロール]グループにある[テキストボックス]を選択して、フォームヘッダーへドラッグします。
[テキストボックス ウィザード]が表示されたら、[キャンセル]ボタンをクリックして閉じてください。
参考テキストボックスを挿入すると、ラベルも一緒に挿入されますが、テキストボックスのみ挿入したい時は、[Ctrl]キーを押しながらドラッグします。
また、[非連結]とはテーブルやクエリのデータがもとになっていないコントロールのことを指します。
ラベルとテキストボックスに名前を付けます。
[デザイン]タブの[ツール]グループにある[プロパティシート]をクリックします。または、[F4]キーを押すと、プロパティを表示できます。
自動的に名前が付与されていますが、より分かりやすい名前に変更します。
[その他]タブの[名前]のテキストボックスに入力します。ここでは、[抽出]とします。
このテキストボックスの名前は、後でクエリを設定するときに使用します。
テキストボックスのプロパティで[書式]をテーブルの[表示価格]と同じ[通貨]にします。
ラベルには、[表示価格が入力値以上の商品を抽出]と入力しておきます。
[F5]キーを押して、フォームビューに切り替えると、以下のようになっています。
フォーム[F_表示価格抽出]は、上書き保存して閉じます。
クエリの作成
[表示価格]がフォーム[F_表示価格抽出]のテキストボックス[抽出]に入力される値以上のレコードを抽出するクエリを作成します。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
クエリデザイン
新しい空のクエリをデザインビューで作成します。
[テーブルの表示]ダイアログボックスを使用して、クエリデザインにテーブルまたはクエリを追加できます。
[テーブルの表示]ダイアログボックスが表示されますので、テーブル[T_商品]を選択して[追加]ボタンをクリックします。
デザイングリッドに、すべてのフィールドを追加します。
[T_ 商品]のフィールドをデザイングリッドにドラッグするか、フィールドをダブルクリックして追加します。
参考ここでは、デザイングリッドのフォントは、オプションの設定で大きくしています。
-
クエリデザインとデータシートビューのフォントサイズを変更
Accessのクエリデザインとデータシートビューのフォントサイズを変更する方法です。 大きく表示したいと思う方も多いのではないでしょうか?オ ...
バージョンによって異なると思いますが、[作成]タブの[クエリデザイン]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。
クエリデザインの「テーブルの追加」は作業ウィンドウに表示される
抽出条件の設定
デザイングリッドの[表示価格]の[抽出条件]に以下のように入力します。
[表示価格]がフォーム[F_表示価格抽出]のテキストボックス[抽出]の値以上のレコードを抽出するという意味になります。
>=[forms]![F_表示価格抽出]![抽出]
入力途中で、以下のような入力候補一覧(補助メニュー)が表示されると思います。メニューから選択すると、ミスの軽減になります。
入力しやすくするためには、ショートカットメニューから[ズーム]をクリックすると、ズームウィンドウが表示されます。
ただし、入力候補一覧は表示されません。
比較演算子は以下のようになります。テキストボックスと同じ値で抽出する場合は、[=]を入力する必要はありません。
比較演算子 | 読み | 意味 |
< | 小なり記号 | ~より小さい |
> | 大なり記号 | ~より大きい |
<= | より小か等しい記号 | ~以下 |
>= | より大か等しい記号 | ~以上 |
<> | 不等号 | 等しくない |
参考クエリの抽出条件は、以下の記事でも解説しています。
-
帳票フォームのボタンをクリックして同じIDの単票フォームを起動する
Accessで、帳票フォームから同じIDの単票フォームをボタンで起動する方法を解説します。 横に長い情報より、1つのウィンドウで表示したいと ...
フィルター実行後にクエリとして保存すると、抽出条件の記述を確認できます。
-
フィルター実行後にクエリとして保存(抽出条件の書き方が分からない時も)
Accessのテーブルやフォーム、レポートでレコードを抽出するには、フィルターボタンや選択フィルターを使います。 標準で使用できる抽出条件は ...
クエリの抽出条件を実行
作成したクエリの抽出条件が正常に動作するかどうかをテストします。
まず、先に作成したフォーム[F_表示価格抽出]を表示して、テキストボックス[抽出]に値を入力します。
ここでは、[2000]と入力して表示しておきます。
フォームはそのままにして、作成途中のクエリに切り替えます。
[クエリデザイン]の[表示]または[実行]ボタンをクリックします。
表示価格が2,000以上の値のレコードが抽出されています。
[F12]キーを押して、[名前を付けて保存]ダイアログボックスを表示して、クエリに名前を付けて保存します。
ここでは、[Q_表示価格抽出]とします。
フォームに抽出ボタンを作成
フォームにレコードを抽出するボタンを作成して、ボタンをクリックしたら、クエリを実行するように設定します。
フォーム[F_表示価格抽出]をデザインビューで開いて、[ボタン]を選択してフォームヘッダーにボタンを作成します。
コマンドボタンウィザードが表示されたら、[キャンセル]ボタンをクリックして閉じます。
ボタンに名前を付けます。ここでは、[抽出実行]とします。
コマンドボタンのプロパティを表示します。
プロパティの[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
マクロツールが表示されます。
[新しいアクションの追加]の▼ボタンをクリックして、[フィルターの実行]を選択します。
[フィルターの実行]の[フィルター名]にクエリの名前を入力します。
ここも入力候補一覧(補助メニュー)が表示されますので、選択するだけで表示できると思います。
[上書き保存]して[閉じる]ボタンを押して、マクロツールを閉じます。
コマンドボタンのプロパティには、[埋め込みマクロ]と表示されます。
フォームビューに切り替えて、テキストボックスに値を入力して、[抽出実行]ボタンをクリックしてみます。
求めた結果になっていると思います。
テキストボックスが空白の場合にすべてのレコードを表示するには
フォーム[F_表示価格抽出]のテキストボックス[抽出]が空の場合、コマンドボタン[抽出実行]をクリックすると、以下のようにレコードは表示されません。
テキストボックスが空の時に、すべてのレコードを表示するには、クエリを編集します。
クエリ[Q_表示価格抽出]をデザインビューで開いて、[表示価格]の[または]行に以下のように入力します。
これで、フォームのテキストボックスが空白のときに[抽出実行]ボタンを押すと、全レコードが表示されるようになります。
参考抽出条件が空の場合のクエリでの抽出条件については、以下の記事でも解説しています。
抽出したレコード数を自動表示
抽出されたレコード数をテキストボックスに表示することもできます。
フォームをデザインビューで表示して、非連結のテキストボックスを挿入します。
そのテキストボックスのプロパティを表示して、[データ]タブの[コントロールソース]に[=Count(*)]と入力します。
=Count(*)
結果、以下のようになります。
テキストボックスが空の時に、コマンドボタン[抽出実行]をクリックすると、すべてのレコードが表示されます。
参考[解除]ボタンを設置してテキストボックスの値を削除して、全レコードを表示する方法は、以下の記事を参考にしてください。
[閉じる]ボタンを設置して、メッセージボックスの[はい]がクリックされたらフォームを閉じるように設定することができます。
-
メッセージボックスで[はい]が選択されたらアクションを実行する
Accessのフォームで[閉じる]ボタンを設置しても、メッセージボックスは表示されずにフォームは閉じられてしまいます。 [閉じる]ボタンをク ...
抽出データをExcelへエクスポート
抽出条件をクエリで設定しておくと、抽出したデータをExcelへエクスポートするのも簡単です。
フォーム[F_表示価格抽出]にエクスポート用のボタンを作成します。
コマンドボタンを挿入して、[標題]は[出力]という名前を付けておきます。
埋め込みマクロで設定しますので、[イベント]タブの[ビルダー選択]ボタン[…]をクリックして、
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
[マクロツール]が表示されますので、[アクションの追加]の▼ボタンをクリックして、[書式設定を保存したままエクスポート]を選択します。
以下のように設定します。プルダウンメニューから選択できます。
設定が終わったら、上書き保存して閉じます。
コマンドボタンのプロパティには、[埋め込みマクロ]と表示されます。
[F5]キーを押して、フォームビューに切り替えて、動作を確認します。
抽出条件のテキストボックスには、[5000]と入力して、[抽出実行]ボタンをクリックします。
[出力]ボタンをクリックします。
[ファイルへ出力]ダイアログボックスが表示されます。
ファイル名は変更する必要があれば、変更してください。マクロで何も指定していない場合は、クエリの名前が表示されます。
[自動起動]は、オンになっています。
[OK]ボタンをクリックします。
以下のようにExcelが表示されます。
参考フォームで検索するだけでいいのか、抽出したデータを基に何か操作をしたいのか、目的によって判断してください。
検索だけでよいのであれば、埋め込みマクロやイベントプロシージャで設定すればいいと思います。抽出条件を毎回クエリで作成すると、オブジェクトが増えてしまいますからね。
-
テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)
Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...
-
テキストボックスでレコード抽出(コードビルダーを起動して設定)
Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...
ただ、クエリで条件を設定しておくと、出力したり、グループ化などの設定ができます。
エクスポート操作については、以下の記事でも解説しています。独立マクロを作成する方法ですが、参考になると思います。
-
Excelへ出力(エクスポート)するコマンドボタンの作成
Access2010でテーブルやクエリをExcelへ出力するマクロを作成して、それをコマンドボタンに登録する方法です。 独立マクロを作成して ...
また、65000件以上のレコードをエクスポートするときは、[書式設定を保持したままエクスポート]を選択すると出力できないようです。
-
65000件以上のレコードのエクスポートは書式設定なしで出力
Access2013で7万レコード以上あるテーブルをExcelへエクスポートするマクロを作成しようとしたら、以下のメッセージが表示されました ...