Office 2019 Access 2019

クエリの抽出条件にテキストボックスの値を設定してレコードを抽出

投稿日:2021年9月25日 更新日:

Accessのクエリでレコードを抽出する方法です。

クエリの抽出条件には、フォームのテキストボックスの値を指定することができます。

また、クエリを作成しておくと、それを埋め込みマクロに設定することもできます。

クエリを作成しなくても、フォームに作成したボタンのイベントプロシージャや、埋め込みマクロに記述してレコードの抽出を行うこともできますが、クエリで抽出条件を設定すると、抽出したレコードを出力することができます。

Accessフォームでレコード抽出と出力

参考埋め込みマクロと、イベントプロシージャでレコードを抽出する方法は、以下で解説しています。

テキストボックスの文字列でレコードを抽出(埋め込みマクロで設定)

Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...

続きを見る

テキストボックスでレコード抽出(コードビルダーを起動して設定)

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

続きを見る

ここでのフォームの表示は、[タブ付きドキュメント](既定)です。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

テーブルから帳票フォームを作成

テーブルを基に帳票フォームを作成します。

テーブルの確認

[T_商品]という名前のテーブルがあります。このテーブルを基にフォームを作成します。

テーブルのデータシートビュー

以下は、テーブルのデザインビューです。[表示価格]と[標準価格]フィールドのデータ型は、[通貨型]にしています。

テーブルのデザインビュー

帳票フォームの作成

テーブル[T_商品]を選択して、[作成]タブの[フォーム]グループにある[その他のフォーム]から[複数のアイテム]を選択します。

[複数のアイテム]を選択すると、[帳票フォーム]が作成されます。

複数のアイテム

複数のレコードを一度に表示するフォームを作成します。

[作成]タブの[その他のフォーム]-[複数のアイテム]

以下のようにフォームがレイアウトビューで表示されます。

レイアウトビュー

レイアウトビューのまま、コントロールの大きさなどを調整します。

レイアウトビューでの編集は、実際のレコードのデータを表示したまま調整できるので、コントロールの幅などを調整する時は便利です。

レイアウトビューでフォームのコントロールをカスタマイズ

Accessのフォームには、デザインビュー、レイアウトビュー、フォームビューの3つの表示方法があります。 コントロールのサイズや位置などを調 ...

続きを見る

必要であれば、デザインビューに切り替えて、調整します。

ここでは、ヘッダーのタイトルなども変更して、以下のようなフォームを作成しました。

フォームは、[F_表示価格抽出]という名前を付けて保存します。

帳票フォームの作成

参考クエリは、ウィザードを使用して作成することもできます。ウィザードの場合は、[表形式]を選択すると、[帳票フォーム]を作成できます。

フォームウィザードを使って表形式のフォームを作成

フォームに非連結のテキストボックスを作成

作成した帳票フォーム[F_表示価格抽出]をデザインビューで開きます。

フォームをデザインビューに切り替え

[デザイン]タブの[コントロール]グループにある[テキストボックス]を選択して、フォームヘッダーへドラッグします。

[テキストボックス ウィザード]が表示されたら、[キャンセル]ボタンをクリックして閉じてください。

参考テキストボックスを挿入すると、ラベルも一緒に挿入されますが、テキストボックスのみ挿入したい時は、[Ctrl]キーを押しながらドラッグします。

非連結のテキストボックスを作成

ラベルとテキストボックスに名前を付けます。

[デザイン]タブの[ツール]グループにある[プロパティシート]をクリックします。または、[F4]キーを押すと、プロパティを表示できます。

自動的に名前が付与されていますが、より分かりやすい名前に変更します。

[その他]タブの[名前]のテキストボックスに入力します。ここでは、[抽出]とします。

このテキストボックスの名前は、後でクエリを設定するときに使用します。

テキストボックスのプロパティ-[名前]

テキストボックスのプロパティで[書式]をテーブルの[表示価格]と同じ[通貨]にします。

テキストボックスのプロパティ-[書式]

ラベルには、[表示価格が入力値以上の商品を抽出]と入力しておきます。

ラベルの標題

[F5]キーを押して、フォームビューに切り替えると、以下のようになっています。

フォーム[F_表示価格抽出]は、上書き保存して閉じます。

抽出条件を入力するテキストボックスを追加したフォーム

クエリの作成

[表示価格]がフォーム[F_表示価格抽出]のテキストボックス[抽出]に入力される値以上のレコードを抽出するクエリを作成します。

[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。

クエリデザイン

新しい空のクエリをデザインビューで作成します。

[テーブルの表示]ダイアログボックスを使用して、クエリデザインにテーブルまたはクエリを追加できます。

[作成]タブの[クエリデザイン]

[テーブルの表示]ダイアログボックスが表示されますので、テーブル[T_商品]を選択して[追加]ボタンをクリックします。

[テーブルの表示]ダイアログボックス

デザイングリッドに、すべてのフィールドを追加します。

[T_ 商品]のフィールドをデザイングリッドにドラッグするか、フィールドをダブルクリックして追加します。

クエリのデザインビュー

参考ここでは、デザイングリッドのフォントは、オプションの設定で大きくしています。

クエリデザインとデータシートビューのフォントサイズを変更

Accessのクエリデザインとデータシートビューのフォントサイズを変更する方法です。 大きく表示したいと思う方も多いのではないでしょうか?オ ...

続きを見る

抽出条件の設定

デザイングリッドの[表示価格]の[抽出条件]に以下のように入力します。

[表示価格]がフォーム[F_表示価格抽出]のテキストボックス[抽出]の値以上のレコードを抽出するという意味になります。

>=[forms]![F_表示価格抽出]![抽出]

入力途中で、以下のような入力候補一覧(補助メニュー)が表示されると思います。メニューから選択すると、ミスの軽減になります。

[抽出条件]に入力

入力しやすくするためには、ショートカットメニューから[ズーム]をクリックすると、ズームウィンドウが表示されます。

ただし、入力候補一覧は表示されません。

ショートカットメニューから[ズーム]

比較演算子は以下のようになります。テキストボックスと同じ値で抽出する場合は、[=]を入力する必要はありません。

比較演算子 読み 意味
< 小なり記号 ~より小さい
> 大なり記号 ~より大きい
<= より小か等しい記号 ~以下
>= より大か等しい記号 ~以上
<> 不等号 等しくない

参考クエリの抽出条件は、以下の記事でも解説しています。

帳票フォームから同じIDの単票フォームを起動するには

Accessで、帳票フォームから同じIDの単票フォームをボタンで起動する方法を解説します。 横に長い情報より、1つのウィンドウで表示したいと ...

続きを見る

クエリの抽出条件を実行

作成したクエリの抽出条件が正常に動作するかどうかをテストします。

まず、先に作成したフォーム[F_表示価格抽出]を表示して、テキストボックス[抽出]に値を入力します。

ここでは、[2000]と入力して表示しておきます。

フォームのテキストボックスに数値を入力

フォームはそのままにして、作成途中のクエリに切り替えます。

[クエリデザイン]の[表示]または[実行]ボタンをクリックします。

クエリの[表示]ボタン

表示価格が2,000以上の値のレコードが抽出されています。

クエリの実行結果

[F12]キーを押して、[名前を付けて保存]ダイアログボックスを表示して、クエリに名前を付けて保存します。

ここでは、[Q_表示価格抽出]とします。

[名前を付けて保存]ダイアログボックス

フォームに抽出ボタンを作成

フォームにレコードを抽出するボタンを作成して、ボタンをクリックしたら、クエリを実行するように設定します。

フォーム[F_表示価格抽出]をデザインビューで開いて、[ボタン]を選択してフォームヘッダーにボタンを作成します。

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

コマンドボタンの挿入

ボタンに名前を付けます。ここでは、[抽出実行]とします。

コマンドボタンのプロパティを表示します。

プロパティの[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。

コマンドボタンのプロパティ[クリック時]

[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

マクロツールが表示されます。

[新しいアクションの追加]の▼ボタンをクリックして、[フィルターの実行]を選択します。

マクロツールで[フィルターの実行]を選択

[フィルターの実行]の[フィルター名]にクエリの名前を入力します。

ここも入力候補一覧(補助メニュー)が表示されますので、選択するだけで表示できると思います。

[上書き保存]して[閉じる]ボタンを押して、マクロツールを閉じます。

[フィルターの実行]の[フィルター名]にクエリの名前を入力

コマンドボタンのプロパティには、[埋め込みマクロ]と表示されます。

コマンドボタンのプロパティ

フォームビューに切り替えて、テキストボックスに値を入力して、[抽出実行]ボタンをクリックしてみます。

求めた結果になっていると思います。

[抽出実行]ボタンをクリックしてレコードを抽出

テキストボックスが空白の場合にすべてのレコードを表示するには

フォーム[F_表示価格抽出]のテキストボックス[抽出]が空の場合、コマンドボタン[抽出実行]をクリックすると、以下のようにレコードは表示されません。

テキストボックスが空の時にコマンドを実行した結果

テキストボックスが空の時に、すべてのレコードを表示するには、クエリを編集します。

クエリ[Q_表示価格抽出]をデザインビューで開いて、[表示価格]の[または]行に以下のように入力します。

[forms]![F_表示価格抽出]![抽出] Is Null

クエリの[または]行に条件と入力

これで、フォームのテキストボックスが空白のときに[抽出実行]ボタンを押すと、全レコードが表示されるようになります。

参考抽出条件が空の場合のクエリでの抽出条件については、以下の記事でも解説しています。

条件が入力されない場合にすべてのレコードを表示するには

抽出したレコード数を自動表示

抽出されたレコード数をテキストボックスに表示することもできます。

フォームをデザインビューで表示して、非連結のテキストボックスを挿入します。

そのテキストボックスのプロパティを表示して、[データ]タブの[コントロールソース]に[=Count(*)]と入力します。

=Count(*)

テキストボックスのコントロールソース

結果、以下のようになります。

抽出されたレコード数がテキストボックスに表示

テキストボックスが空の時に、コマンドボタン[抽出実行]をクリックすると、すべてのレコードが表示されます。

テキストボックスが空の場合はすべてのレコードが表示

参考[解除]ボタンを設置してテキストボックスの値を削除して、全レコードを表示する方法は、以下の記事を参考にしてください。

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

[閉じる]ボタンを設置して、メッセージボックスの[はい]がクリックされたらフォームを閉じるように設定することができます。

メッセージボックスで[はい]が選択されたらアクションを実行する

Accessのフォームで[閉じる]ボタンを設置しても、メッセージボックスは表示されずにフォームは閉じられてしまいます。 [閉じる]ボタンをク ...

続きを見る

抽出データをExcelへエクスポート

抽出条件をクエリで設定しておくと、抽出したデータをExcelへエクスポートするのも簡単です。

フォーム[F_表示価格抽出]にエクスポート用のボタンを作成します。

コマンドボタンを挿入して、[標題]は[出力]という名前を付けておきます。

埋め込みマクロで設定しますので、[イベント]タブの[ビルダー選択]ボタン[…]をクリックして、

[出力]ボタンの作成

[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

[マクロツール]が表示されますので、[アクションの追加]の▼ボタンをクリックして、[書式設定を保存したままエクスポート]を選択します。

マクロツールで[書式設定を保存したままエクスポート]を選択

以下のように設定します。プルダウンメニューから選択できます。

設定が終わったら、上書き保存して閉じます。

マクロツールのアクションを設定

コマンドボタンのプロパティには、[埋め込みマクロ]と表示されます。

コマンドボタンのプロパティ

[F5]キーを押して、フォームビューに切り替えて、動作を確認します。

抽出条件のテキストボックスには、[5000]と入力して、[抽出実行]ボタンをクリックします。

[出力]ボタンをクリックします。

フォームビューで[出力]ボタンをクリック

[ファイルへ出力]ダイアログボックスが表示されます。

ファイル名は変更する必要があれば、変更してください。マクロで何も指定していない場合は、クエリの名前が表示されます。

[自動起動]は、オンになっています。

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

[ファイルへ出力]ダイアログボックス

以下のようにExcelが表示されます。

Excelファイルの表示

参考フォームで検索するだけでいいのか、抽出したデータを基に何か操作をしたいのか、目的によって判断してください。

検索だけでよいのであれば、埋め込みマクロやイベントプロシージャで設定すればいいと思います。抽出条件を毎回クエリで作成すると、オブジェクトが増えてしまいますからね。

テキストボックスの文字列でレコードを抽出(埋め込みマクロで設定)

Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...

続きを見る

テキストボックスでレコード抽出(コードビルダーを起動して設定)

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

続きを見る

ただ、クエリで条件を設定しておくと、出力したり、グループ化などの設定ができます。

エクスポート操作については、以下の記事でも解説しています。独立マクロを作成する方法ですが、参考になると思います。

Excelへ出力(エクスポート)するコマンドボタンの作成

Access2010でテーブルやクエリをExcelへ出力するマクロを作成して、それをコマンドボタンに登録する方法です。 マクロの作成は3つの ...

続きを見る

また、65000件以上のレコードをエクスポートするときは、[書式設定を保持したままエクスポート]を選択すると出力できないようです。

65000件以上のエクスポートは書式設定なしで出力

Access2013で7万レコード以上あるテーブルをExcelへエクスポートするマクロを作成しようとしたら、以下のメッセージが表示されました ...

続きを見る

検索

ほかの記事も検索してみませんか?

おすすめ記事と広告

Profile

執筆者/はま

-Office 2019 Access 2019

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

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