こんにちは、じじグラマーのカン太です。
50歳目前、日々増える脂肪に怯えながら週末プログラマーをしています。
初心者のためのAccess講座の四回目です。
今回はクエリとフォームを連動させて、フォームで入力した値をクエリの抽出条件にする方法を紹介します。
この記事では、前回までのAccessデータベースを使用します。まだ読んでいない方は、過去記事からお進みください。
フォームに検索条件を指定
前回の「サンプルフォーム」を右クリックして「デザインビュー」で開けます。
「社員マスタ印刷」ボタンを下にズラしました。
(マウスで掴んであげると移動ができます。周囲を掴めば大きさも変更できます。)
「デザインメニュー」の左から二つ目「 ab|」(テキストボックス)をクリックしてください。テキストボックスをマウスで描くことが可能になります。
テキストボックスを選んだ状態でフォームデザインに戻ります(フォームの上でクリックすると戻れます)。適当な位置に適当な大きさで、テキストボックスを配置してみてください。マウスで描画するイメージです。
「テキスト1」といラベルと非連結と書かれた白い箱ができましたでしょうか。
次に、白い箱の上で右クリック → 一番下の「プロパティ」をクリックしてください。
一番上の名前欄に「社員番号」と入力してください。
位置や大きさはデタラメですが、「社員番号」というテキストボックスができました。
こまでできたら、「サンプルフォーム」を保存して終了してください。
クエリに検索条件を追加
続いて、フォームに作ったテキストボックスとクエリを紐づけます。これで、入力された社員ボックスの値で社員マスタを検索できるようになります。
「五十音順」クエリを右クリック → デザインビュー で開けてください。
下欄の「抽出条件」を右クリック → 「ビルド」を選択してください。
「式ビルダー」が開きます。
前回使用した抽出条件が残っている場合は、全部消去してください。
左下「式の要素」欄からツリー状になっているところを開けていき、「サンプルフォーム」を選んでください。
(現在のデータベース → 「forms」 → 「すべてのフォーム」 → 「サンプルフォーム」)
下の真ん中の欄(式のカテゴリ)に先ほど設定したテキストボックス「社員番号」が現れますので、ダブルクリックしてください。
上の欄に、[Forms]![サンプルフォーム]![社員番号]と表示されましたでしょうか。
表示されていれば、「OK」ボタンをクリックして元の画面に戻ります。
抽出条件欄に、[Forms]![サンプルフォーム]![社員番号]とセットされているはずです。」
この作業で、フォームで入力された値と検索条件を結びつけることができました。
フォームからレポートを出力
それでは、フォームから入力条件を指定して、「五十音順クエリ」のレポートを出力してみましょう。
マクロとボタンを新しく追加
「五十音順クエリ」というレポートを出力するマクロを追加し、「社員マスタ印刷」ボタンにマクロ実行の命令を貼り付けておきましょう。
マクロの作成は第二回でやったのと同じで、レポートに「五十音順クエリ」を指定し、マクロ名を「五十音順クエリ印刷」とします。
続いて、フォームに「五十音順クエリ印刷」ボタンを追加します。こちらも第二回でやったのと同じ要領で追加します。
最後に、追加したボタンにマクロを貼り付けます。イベント「クリック時」に設定するんでしたね。忘れておられる方はこちらで確認してみてください。
以上で準備完了です。
フォームで入力した条件でレポートを出力
「サンプルフォーム」をダブルクリックして、フォームを開きます。
先ほど作成したテキストボックスに ”0001” と入力して、「五十音順クエリ印刷」ボタンをクリックします。
社員番号「0001」のデータのみが印刷プレビューに表示されていれば、ここまでの設定は完了です。
まとめ
今回の作業をまとめます。
- フォームに入力用の箱「テキストボックス」追加
- テキストボックスに名前を設定
- クエリに検索条件(フォームのテキストボックス)を追加
- フォームにボタンを追加(復習)
- レポート印刷のマクロを追加(復習)
- ボタンのクリックイベントに追加したマクロを設定(復習)
- 指定した条件のレポートを印刷
今回はちょっと作業量が多めでした。まだいわゆるプログラミングのコードは一行も書いていません。
Accessではこのようにコードを書かなくても感覚的にいろんな作業を用意してくれています。慣れるとどんどん作業がはかどります。新しく条件付き印刷のレポートを出力するボタンを作ってみてください。
名前も配置もデザインもヘンテコですが、簡単な印刷プログラムができました。
うまく動かなかった方はコメントください。
次回は複数のテーブルからひとつのクエリを作ってみましょう。
コメント