Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。
ここでは、テーブルを基にウィザードを使って表形式のフォームを作成します。そして、フォームヘッダーにテキストボックスとコマンドボタン挿入して、マクロアクションで作成します。
また、フィルターされたレコードを解除するボタンと、レコードの件数を自動表示するテキストボックスも設置します。
参考ここでのフォームの表示は、[タブ付きドキュメント](既定)です。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
フォームウィザードを使って表形式のフォームを作成
[T_商品]という名前のテーブルがあります。このテーブルを基にフォームを作成します。
テーブル[T_商品]を選択して、[作成]タブの[フォーム]グループにある[フォームウィザード]をクリックします。
フォームウィザードが表示されます。
フォームに表示するフィールドを選択します。
テーブルは、[T_商品]が選択されています。もしも、テーブル名が異なっているのであれば、▼ボタンをクリックして選択します。
中央にあるフィールド選択ボタンで、ここでは[すべてのフィールドを選択](>>)ボタンをクリックします。
参考フィールド選択ボタンは、フィールドを選択したり、解除することができます。
ボタン | 操作 |
> | フィールドを選択 |
>> | すべてのフィールドを選択 |
< | フィールドを解除 |
<< | すべてのフィールドを解除 |
[次へ]ボタンをクリックします。
フォームのレイアウトを指定します。ここでは、[表形式]を選択します。[次へ]ボタンをクリックします。
フォームのレイアウトの選択の違いについては、以下で解説しています。ここではテキストボックスやボタンを設置するフォームヘッダーが必要なので[表形式]を選択します。
フォームを入力して[完了]ボタンをクリックします。
完成したフォームがフォームビューで表示されます。
参考ウィザードではなく[作成]タブの[その他のフォーム]から[複数のアイテム]を選択して作成することもできます。
コントロールの位置や大きさを調整
[レイアウトビュー]や[デザインビュー]に切り替えて、コントロールの大きさや位置などを調整します。
以下の画像は、レイアウトビューです。
レイアウトビューでの編集は、実際のレコードのデータを表示したまま調整できるので、コントロールの幅などを調整する時は便利です。
-
レイアウトビューでフォームのコントロールをカスタマイズ
Accessのフォームには、デザインビュー、レイアウトビュー、フォームビューの3つの表示方法があります。 コントロールのサイズや位置などを調 ...
ヘッダーのタイトルなども変更して、以下のようなフォームを作成しました。
このフォームのヘッダーにテキストボックスを挿入して、テキストボックス内の文字列でレコードを抽出するコマンドボタンと、フィルターされたレコードを解除するボタンを設置します。
テキストボックスの挿入
フォームをデザインビューで表示します。
[デザイン]タブの[コントロール]グループにある[テキストボックス]を選択して、フォームヘッダーへドラッグします。
[テキストボックス ウィザード]が表示されたら、[キャンセル]ボタンをクリックして閉じてください。
参考テキストボックスを挿入すると、ラベルも一緒に挿入されますが、テキストボックスのみ挿入したい時は、[Ctrl]キーを押しながらドラッグします。
ラベルとテキストボックスに名前を付けます。
[デザイン]タブの[ツール]グループにある[プロパティシート]をクリックします。または、[F4]キーを押すと、プロパティを表示できます。
自動的に名前が付与されていますが、より分かりやすい名前に変更します。
[その他]タブの[名前]のテキストボックスに入力します。ここでは、[検索]とします。
このテキストボックスの名前は、後でマクロを設定するときに使用しますので、しっかり覚えておいてください。
参考テキストボックスに入力する時、カタカナのみなどIMEの指定をしたい場合は、プロパティの[その他]タブの[IME入力モード]で設定します。
コマンドボタンの挿入
今度は、フォームヘッダーにレコードを抽出するためのコマンドボタンを挿入します。
[デザイン]タブの[コントロール]グループにある[ボタン]をクリックして、テキストボックスの近くでドラッグします。
[コマンドボタンウィザード]が表示されたら、[キャンセル]ボタンをクリックします。
コマンドボタンのプロパティの[書式]タブにある[標題]に[検索]と入力します。[標題]とはボタンに表示される文字列のことです。
参考[標題]と[名前]は異なるものです。ここでは、コマンドボタンの名前は[検索ボタン]にします。
ボタン名は、[その他]タブの[名前]のテキストボックスでも入力できます。
マクロビルダーを起動して埋め込みマクロを設定
検索ボタンを選択して、プロパティを表示します。
[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[...]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されます。
[マクロビルダー]を選択して、[OK]ボタンをクリックします。
参考[ビルダーの選択]で[コードビルダー]を選択して設定する方法は、以下の記事で解説しています。
同じデータベースを使って解説していますので、分かりやすいと思います。
-
テキストボックスでレコード抽出(コードビルダーを起動して設定)
Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...
フィルターの設定
マクロツールが表示されます。
▼ボタンをクリックして、一覧から[フィルターの設定]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
以下の画面になりますので、
[Where条件式]のテキストボックスに以下を入力します。あいまい検索の条件式になります。
フォーム[F_商品検索]の[検索]テキストボックス内の文字列を含んだ商品名を検索するという意味です。
[上書き保存]ボタンをクリックした後、[閉じる]ボタンをクリックしてマクロツールを閉じます。
プロパティには、[埋め込みマクロ]と表示されます。
[埋め込みマクロ]と[独立マクロ]については、以下の記事で記しています。
-
独立マクロと埋め込みマクロの違いを知って使い分け
Accessのマクロには、独立マクロと埋め込みマクロというのがあります。 独立マクロは、マクロを個別に作成して、後でオブジェクトのプロパティ ...
参考入力していると、以下のように入力支援のための補助ツールが表示されますので、利用するとミスが少なくなると思います。ダブルクリックで入力できます。
また、[Where条件式]にミスがあると、左側に[!]マークが表示されますので、間違いがないか確認してください。
テキスト型の条件
主なテキスト型の条件の記述方法です。文字列の指定は["](ダブルクォーテーション)で囲みます。
記述例 | 意味 |
"●" | 完全一致 |
Not "●" | 一致しない |
Like "●*" | 指定した文字列から始まる |
Not Like "●*" | 指定した文字列で始まらない |
Like "*●*" | 指定した文字列を含む |
Not Like "*●*" | 指定した文字列を含まない |
Like "*●" | 指定した文字列で終わる |
Not Like "*●" | 指定した文字列で終わらない |
クエリの抽出条件の例 - Access(Microsoft)
参考クエリの抽出条件の書き方に悩んだときは、フィルター実行後に[クエリとして保存]を選択すると、抽出条件の書き方を確認できるので便利です。
-
フィルター実行後にクエリとして保存(抽出条件の書き方が分からない時も)
Accessのテーブルやフォーム、レポートでレコードを抽出するには、フィルターボタンや選択フィルターを使います。 標準で使用できる抽出条件は ...
パラメータークエリーでもあいまい検索でレコードを抽出することができます。
-
パラメータークエリを作成して毎回異なる条件でレコードを抽出
パラメータークエリは、クエリを実行すると[パラメーターの入力]ダイアログボックスが表示され、そのテキストボックスに条件を入力してレコードを抽 ...
検索ボタンをクリックしてレコードの抽出を確認
フォームビューに切り替えて、動作を確認します。
デザインビューからフォームビューに切り替えるショートカットキーは、[F5]キーです。
テキストボックスに文字を入力して、[検索]ボタンをクリックすると、下のように商品名の一部に検索文字を含む商品名が抽出されます。
フィルターを解除する場合は、[ホーム]タブの[並べ替えとフィルター]グループにある[フィルターの解除]ボタンをクリックします。
または、移動ボタンの右にある[フィルター適用]をクリックします。
フィルターが解除されると、[フィルター処理なし]と表示されます。
フィルターを解除するボタンを作成
レコードを抽出したら、フィルターを解除するボタンを設置しておくと、より便利です。
[検索]ボタンを作成したときと同じように[マクロビルダー]を起動して作成していきます。
フォームをデザインビューで開いて、コマンドボタンを挿入します。
ボタンの[標題]は[解除]、名前は[解除ボタン]とします。
[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[...]をクリックします。
[ビルダーの選択]ダイアログボックスで、マクロビルダーを選択して[OK]ボタンをクリックします。
フィルターの解除
マクロツールが表示されます。
▼ボタンをクリックして、一覧から[全レコードの表示]を選択します。
[全レコードの表示]は一覧の最後から3番目にあります。
または、マクロアクション[フィルター/並べ替えの解除]を選択してもOKです。
テキストボックスの値を空にする
フィルターの解除と同時に、テキストボックスの中の文字列も消しておくと、次の検索が便利になります。
[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックします。
[全レコードの表示]の下にある[新しいアクションの追加]の▼ボタンをクリックします。
そして、プルダウンから[値の代入]を選択します。最後から4番目にあります。
[アイテム]のテキストボックスにテキストボックスの名前を[[検索]]入力します。
[式]には、[Null]と入力します。
そして、[上書き保存]ボタンをクリックした後、[閉じる]ボタンをクリックしてマクロツールを閉じます。
フォームビューに切り替えて、動作を確認します。
[検索]ボタンをクリックしてレコードを抽出した後、[解除]ボタンをクリックしてみます。
フィルターが解除されて、テキストボックスの値も消えます。
参考以下の記事でもコマンドボタンでレコードを抽出する方法を記しています。
-
フィールドの同じ値の数をカウントするにはクエリでグループ化
クエリのグループ化は、グループごとに集計できる便利な機能です。 たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平 ...
検索ボックスが空白の場合はメッセージを表示するには
必ずしも必要とは思いませんが、検索ボックスが空白のまま[検索]ボタンをクリックされた場合は、メッセージを表示してキーワードを入力するように促す方法を紹介します。
[検索ボタン]の[埋め込みマクロ]を表示して、以下のように変更していきます。
[新しいアクションの追加]の▼ボタンをクリックして、[If]を選択します。[If]は先頭にあります。
[If]のテキストボックスに、以下のように入力します。[検索]は、テキストボックスの名前です。
そして、すぐ下にある[新しいアクションの追加]の▼ボタンをクリックします。
IsNull([検索])
[メッセージボックス]を選択します。一覧の中ほどにあります。
[メッセージ]のテキストボックスにメッセージウィンドウに表示したい内容を入力します。
[メッセージの種類]は以下の4つが用意されています。ここでは[なし]を選択しています。
メッセージのタイトルには、任意の文字列を入力します。空白にした場合は、[Microsoft Access]と表示されます。
Accessのオプションでアプリケーションタイトルを入力している場合は、そのタイトルが表示されます。
そして、[Elseの追加]をクリックします。
[If]のアクションを先頭に持っていきたいので、[上へ移動]ボタンをクリックします。
そして、[フィルターの設定]のアクションを[上へ移動]ボタンをクリックして、[Else]の後ろへ表示します。
以下のように並べられたら、OKです。マクロウィンドウを保存して、フォームビューで動作を確認してみてください。
参考If文の設定方法は、以下の記事内の[OK]ボタンに埋め込みマクロを設定でも解説しています。
-
パスワード入力フォームを作成してパスワードが合えば開くようにする
Accessでパスワード入力フォームを作成して、パスワードを入力してパスワードが合えばフォームを開くようにする方法です。 注意ここでは、Ac ...
以下の記事では、レコード検索時に該当するレコードがない場合にメッセージを表示する方法を解説しています。
-
レコード検索時に該当するレコードがない場合はメッセージを表示する
フォームに検索ボックス(テキストボックス)を設置して、管理番号を入力したら該当のレコードを抽出する仕組みを作ります。 その時、検索ボックスに ...
タブ移動の設定
フォームをデザインビューで表示して、[デザイン]タブの[ツール]グループにある[タブオーダー]をクリックします。
[タブオーダー]ダイアログボックスが表示されます。
[フォームヘッダー]を選択して、タブオーダーの設定が、以下のように[検索、検索ボタン、解除ボタン]の順になっていると操作しやすいと思います。
順番は、ドラッグで入れ替えることができます。
タブオーダーについては、以下の記事で解説しています。
-
フォームのタブオーダーとタブストップの設定
タブオーダーとは、キーボートの[Tab]キーや[Enter]キーを押して、カーソルがフォーム内のコントロールを移動するときの順番のことです。 ...
抽出したレコード数を自動表示
抽出されたレコード数をテキストボックスに表示することもできます。
フォームをデザインビューで表示して、非連結のテキストボックスを挿入します。
そのテキストボックスのプロパティを表示して、[データ]タブの[コントロールソース]に[=Count(*)]と入力します。
=Count(*)
フォームビューで確認すると、以下のように抽出されたレコード数が表示されます。
該当する商品名がない時にメッセージを表示するには
商品検索しても該当する商品名がない場合にメッセージを出す方法です。
レコード数を表示しているテキストボックスを活用します。
レコード数を表示しているテキストボックスの名前を変更
テキストボックスの名前を分かりやすくするために[カウント]にします。
テキストボックスのプロパティの[その他]タブの[名前]に入力します。
[検索]ボタンの[埋め込みマクロ]にマクロアクションを追加
[検索]ボタンの埋め込みマクロを表示します。
[検索]ボタンのプロパティを表示して、[イベント]タブの[クリック時]の[ビルダー選択]ボタン[…]をクリックします。
[If文の最後]の下のマクロアクションで[If]を選択します。
そして、以下を入力します。
続けて、マクロアクション[メッセージボックス]を追加して、メッセージを入力します。ここでは、以下のように入力します。
該当する商品名がありません。
マクロアクション[全レコードの表示]を選択します。
そして、マクロアクション[値の代入]を選択して[アイテム]に[検索]、[式]に[Null]と入力します。
[値の代入]は、[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックしないと表示されませんので注意してください。
最後に、マクロアクション[コントロールの移動]を選択して、[検索]を指定します。
マクロウィンドウは、上書きして保存します。
フォームの[検索]ボックスに商品名にない文字が入力されると、メッセージが表示されます。
そして、メッセージウィンドウの[OK]ボタンをクリックすると、すべてのレコードが表示されます。
[検索]ボックスも空になり、カーソルも[検索]ボックスに移動します。
参考分割フォームにテキストボックスを挿入してイベントプロシージャで設定する方法は、以下の記事で解説しています。同じデータベースを使って解説していますので、分かりやすいと思います。
-
テキストボックスでレコード抽出(コードビルダーを起動して設定)
Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...
抽出条件をクエリで設定することもできます。クエリで設定すると、抽出データを出力するのも簡単です。
-
クエリの抽出条件にテキストボックスの値を設定してレコードを抽出
Accessのクエリでレコードを抽出する方法です。 クエリの抽出条件には、フォームのテキストボックスの値を指定することができます。 また、ク ...
以下では、コンボボックスの値で抽出する方法を解説しています。
-
フォームのコンボボックスの値でレコードを抽出
フォームにコンボボックスを作成して、そのリストから選択して一致するレコードを抽出できるようにします。 ウィザードを使い、コンボボックスの値は ...
埋め込みマクロのWhere条件式で設定しておくと、オブジェクト名を変更した場合などは自動的に修正されるので便利だと思います。
ただ、名前の自動修正は完璧ではありません。データベースのサイズも大きくなります。
-
開くときに意図しないパラメーターの入力ウィンドウが表示される
Accessで作成したデータベースのテーブルや、クエリ、フォーム、レポートを開こうとすると、[パラメータの入力]を求めるウィンドウが表示され ...
[Accessのオプション]で[名前の自動修正オプション]は、既定ではオンになっています。
名前の自動修正オプションを設定する - Access(Microsoft)