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