クエリ、フォーム、レポートでパラメーターを使用する
適用先
Access でクエリを実行するたびに入力を要求する場合は、パラメーター クエリを作成できます。
また、パラメーター値を収集するフォームを作成して、クエリ、フォーム、またはレポートに対して返されるレコードを制限するために使用することもできます。 この記事では、クエリ、フォーム、およびレポートでのパラメーターの使用を強化するためのフォームの使用方法について説明します。
この記事の内容
概要
Access でパラメーター クエリの抽出条件を使用して、クエリで返されるレコードのセットを制限することができます。 パラメーター クエリによって提供されるダイアログ ボックスが、目的を十分に満たしていない場合があります。 このような場合、ユーザーのパラメーター収集のニーズにより適したフォームを作成できます。 この記事では、クエリ パラメーターとレポート パラメーターを収集するフォームを作成する方法について説明します。 この記事は、クエリの作成と、クエリでパラメーターを定義できるユーザーを対象にしています。 続行する前に、少なくとも選択クエリを作成できる必要があります。
この記事では、クエリでパラメーターを使用する例を示します。 抽出条件を指定するための包括的なリファレンスは提供していません。
- 選択クエリを作成する方法の詳細については、記事「簡単な選択クエリを作成する」を参照してください。
- 一般的なクエリの詳細については、「クエリの概要」を参照してください。
- クエリでパラメーターを定義する詳細については、記事「クエリの実行時にパラメーターを使って入力を求める」を参照してください。
- クエリで抽出条件を指定する方法の詳細については、「クエリの抽出条件の例」を参照してください。
クエリでパラメーターを使用する
クエリでパラメーターを使用することは、抽出条件を使用するクエリを作成するのと同様に簡単です。 1 つの情報 (部品番号など) または複数の情報 (2 つの日付など) の入力を求めるクエリを定義できます。 パラメーター クエリでは、パラメーターごとに、そのパラメーターの値の入力を求める個別のダイアログ ボックスが表示されます。
クエリにパラメーターを追加する
選択クエリを作成し、クエリをデザイン ビューで開きます。
パラメーターを適用するフィールドの [抽出条件] 行で、パラメーター ダイアログ ボックスに表示するテキストを、次のように角かっこで囲んで入力します。
[開始日]
このパラメーター クエリを実行すると、角かっこなしでこのプロンプトがダイアログ ボックスに表示されます。
式とパラメーター プロンプトを使用することもできます。次に例を示します。
[開始日] と [終了日] の間注
パラメーター プロンプトごとに個別のダイアログ ボックスが表示されます。 2 番目の例では、開始日と終了日の 2 つのダイアログ ボックスが表示されます。
パラメーターを追加する各フィールドに対して、手順 2 を繰り返します。
上記の手順を使用して、次のいずれかのクエリにパラメーターを追加できます。選択クエリ、クロス集計クエリ、追加クエリ、テーブル作成クエリ、または更新クエリ。
次の手順に従って、ユニオン クエリにパラメーターを追加することもできます。
- ユニオン クエリを SQL ビューで開きます。
- パラメーターの入力を求める各フィールドを含む WHERE 句を追加します。
WHERE 句が既に存在する場合は、その句の中にパラメーター プロンプトに使用したいフィールドが既にあるかどうかを確認し、ない場合は追加します。 - WHERE 句で抽出条件を使用する代わりに、パラメーター プロンプトを使用します。
パラメーターのデータ型を指定する
パラメーターが受け入れるデータ型を指定することもできます。 任意のパラメーターにデータ型を指定できますが、特に、数値、通貨、または日付と時刻のデータに対してデータ型を指定することが重要です。 パラメーターが受け入れるデータ型を指定した場合、ユーザーが間違ったデータ型を入力すると (通貨が必要な場合にテキストを入力するなど)、わかりやすいエラー メッセージが表示されます。
注
テキスト データを受け取るようにパラメーターが構成されている場合、入力はすべてテキストとして解釈され、エラー メッセージは表示されません。
クエリのパラメーターのデータ型を指定するには、次の手順に従います。
- クエリをデザイン ビューで開き、[デザイン] タブの [表示/非表示] で [パラメーター] をクリックします。
- [クエリ パラメーター] ダイアログ ボックスの [パラメーター] 列に、データ型を指定する各パラメーターのプロンプトを入力します。 各パラメーターが、クエリ デザイン グリッドの [抽出条件] 行で使用するプロンプトと一致していることをご確認ください。
- [データ型] 列で、各パラメーターのデータ型を選びます。
パラメーターを収集するフォームを作成する
パラメーター クエリには、パラメーターを収集する組み込みのダイアログ ボックスが備わっていますが、これには基本的な機能しかありません。 フォームを使用してパラメーターを収集することで、次の機能が得られます。
- 日付の予定表コントロールなどのデータ型固有のコントロールを使用する機能。
- 複数のクエリで使用できるように、収集されたパラメーターを保持する機能。
- パラメーターを収集するためのコンボ ボックスまたはリスト ボックスを提供し、使用可能なデータ値のリストから選べる機能。
- その他の機能 (クエリを開く、またはクエリを更新するなど) のコントロールを提供する機能。
次のビデオでは、パラメーター クエリで通常使用されるダイアログ ボックスを使用する代わりに、簡単なフォームを作成してクエリのパラメーターを収集する方法について説明します。
レポートのパラメーターを収集するフォームを作成する
このシナリオのアプローチにはいくつかの方法がありますが、主にマクロを使用して行う方法を 1 つだけ紹介します。 次の手順に従って、レポートのパラメーターを収集するフォームを作成します。
- 手順 1:入力を許可するフォームを作成する
- 手順 2:パラメーターのフォームが既に読み込まれているかどうかを確認するコード モジュールを作成する
- 手順 3:フォームとレポートを制御するマクロを作成する
- 手順 4:フォームに [OK] と [キャンセル] コマンド ボタンを追加する
- 手順 5フォーム データをクエリの抽出条件として使用する
- 手順 6:レポートのイベントにマクロ アクションを追加する
- 手順 7:試してみる
手順 1:入力を許可するフォームを作成する
[作成] タブの [フォーム] グループで、[フォーム デザイン] をクリックします。
デザイン ビューで、F4 キーを押してプロパティ シートを表示し、次の表に示すようにフォームのプロパティを指定します。
プロパティ 設定 キャプション フォームのタイトル バーに表示する名前を入力します。 既定のビュー 1 つのフォーム フォーム ビューの許可 ○ データシート ビューの許可 × ピボットテーブル ビューの許可 × ピボットグラフ ビューの許可 × スクロール バー どちらもなし レコード セレクター × 移動ボタン × 境界線スタイル ダイアログ フォームで収集したい各パラメーターに対し、[デザイン] タブの [コントロール] グループで [テキスト ボックス] をクリックします。
次の表に示すように、テキスト ボックスのプロパティを設定します。
プロパティ 設定 名前 パラメーターを説明する名前を入力します (例: 開始日)。 形式 パラメーター フィールドのデータ型を反映する形式を選びます。 たとえば、日付フィールドには日付 (標準) を選びます。 フォームを保存し、名前を付けます (例: frmCriteria)。
手順 2:パラメーターのフォームが既に読み込まれているかどうかを確認するコード モジュールを作成する
[作成] タブの [マクロ/コード] グループで [モジュール] をクリックします。
Visual Basic エディターに新しいモジュールが開きます。次のコードを Visual Basic エディターに入力するか貼り付けます。
Function IsLoaded(ByVal strFormName As String) As Boolean Dim oAccessObject As AccessObject Set oAccessObject = CurrentProject.AllForms(strFormName) If oAccessObject.IsLoaded Then If oAccessObject.CurrentView <> acCurViewDesign Then IsLoaded = True End If End If End Function一意の名前を付けてモジュールを保存し、Visual Basic エディターを閉じます。
手順 3:フォームとレポートを制御するマクロを作成する
Access マクロのサブマクロ機能を使用すると、必要なすべての手順を 1 つのマクロで定義することができます。 4 つのサブマクロ (ダイアログを開く、ダイアログを閉じる、OK、キャンセル) を作成して、この手順に必要なさまざまなタスクを制御します。 次のスクリーンショットをガイドとして使用し、次のサブマクロとアクションを含む新しいマクロを作成します。 この例では、作成するパラメーター フォームを frmCriteria と呼びます。 前に作成したフォームの名前と一致するようにマクロを調整してください。 また、すべてのマクロ アクションを表示するには、[デザイン] タブで [すべてのアクションを表示] をクリックする必要があります。
マクロを保存して閉じます。 マクロに名前を付けます (例: 日付範囲マクロ)。
手順 4:フォームに [OK] と [キャンセル] コマンド ボタンを追加する
デザイン ビューで前に作成したパラメーター フォームをもう一度開きます。
[デザイン] タブの [コントロール] グループで、[コントロール ウィザードの使用] が選択されていないことを確認します。
[デザイン] タブの [コントロール] で [ボタン] をクリックします。
フォームのテキスト ボックスの下にポインターを移動し、ドラッグして、[OK] コマンド ボタンを作成します。
プロパティ シートが表示されていない場合は、F4 キーを押して表示します。
次の表に示すように、[OK] ボタンのプロパティを設定します。
プロパティ 設定 名前 OK 標題 OK 既定 ○ OnClick マクロの名前を入力します (例: 日付範囲マクロ.OK)。 次の表に示すように、 Cancel コマンド ボタンを作成し、そのプロパティを設定します。
プロパティ 設定 名前 キャンセル 標題 キャンセル OnClick マクロの名前を入力します (例: 日付範囲マクロ.キャンセル)。 フォームを保存して閉じます。
手順 5:フォーム データをクエリの抽出条件として使用する
デザイン ビューで前に作成したクエリを開きます。
データの抽出条件を入力します。 Forms オブジェクト、フォームの名前、およびコントロールの名前を使用します。
- たとえば、Access データベース (.accdb または .mdb) では、frmCriteria という名前のフォームに対し、次の式を使用してクエリの開始日と終了日のコントロールを参照します。
Between [Forms]![frmCriteria]![開始日] And [Forms]![frmCriteria]![終了日]
- たとえば、Access データベース (.accdb または .mdb) では、frmCriteria という名前のフォームに対し、次の式を使用してクエリの開始日と終了日のコントロールを参照します。
手順 6:レポートのイベントにマクロ アクションを追加する
デザイン ビューで使用するレポートを開きます。
プロパティ シートが表示されていない場合は、F4 キーを押して表示します。
レポートの [レコード ソース] プロパティで、以前に定義したパラメーター クエリが使用されていることを確認します。
これら 2 つの追加のレポート プロパティを、次の表に示すように設定します。
プロパティ 設定 OnOpen マクロの名前を入力します (例: 日付範囲マクロ.ダイアログを開く)。 OnClose マクロの名前を入力します (例: 日付範囲マクロ.ダイアログを閉じる)。 レポート開くときに、日付範囲マクロオブジェクトのダイアログを開くサブマクロで定義されたアクションが Access によって実行されます。 同様に、レポートを閉じると、日付範囲マクロオブジェクトのダイアログを閉じるサブマクロで定義されたアクションが Access によって実行されます。
レポートを保存して閉じます。
手順 7: 試してみる
Access オブジェクトをすべて作成したら、試してみましょう。 レポート ビュー または 印刷プレビュー でレポートを開き、Access でレポートが表示される前に、パラメーター フォームがダイアログ モードで開きます。 以前に作成したテキスト ボックスに必要な抽出条件を入力し、フォーム上の [OK] コマンド ボタンをクリックします。 Access によってフォームが非表示 (Visible = No) になり、条件に一致するデータのみのレポートが表示されます。 これが機能するのは、レポートの基となっているパラメーター クエリが非表示のフォームのコントロールの値を読み取ることができるからです。 レポートを閉じると、パラメーター フォームも Access によって閉じられます。