クエリで入力を求める

実行されるたびに入力を求めるクエリが必要な場合は、パラメーター クエリ (パラメーター クエリ: ユーザーが対話形式で抽出条件を指定するクエリ。パラメーター クエリは独立した種類のクエリではなく、クエリの柔軟性を拡張したものです。)を作成します。

パラメーター値を収集するフォームを作成することもできます。フォームを使用すると、次の操作を行うことができます。

  • データ型固有のコントロールを使用する。
  • パラメーター値の永続化を有効にする。
  • コンボ ボックス コントロールを使用する (入力する代わりに、一覧から値を選択できるようにする)。
  • フォームで使用できるその他のコントロールを使用する。

 メモ   Web データベースでは、フォームを使用してクエリ パラメーターを収集できません。

ここでは、パラメーターの概要と、クエリでパラメーターを使用する方法およびフォームを使用してパラメーターの使用を拡張する方法について説明します。

この記事の内容


概要

Access では、クエリの抽出条件を使用して、クエリから返されるレコードのセットを制限できます。次のようなシナリオを考えてみましょう。

顧客の名前と住所および最新の注文に対する出荷日を返す "前回の注文" というクエリがあるとします。最近、いくつかの新製品を在庫およびカタログに追加しました。注文を出荷するたびに、最新のカタログを 1 部同梱します。これらの新製品の人気がでるように、製品についてすべての顧客に知らせる必要があります。あなたは、出荷品と共にカタログを受け取っていないすべての顧客に対して、新しいカタログを郵送したいと考えています。

そこで、新しいカタログが作成されるまでに最新の注文が出荷された顧客の名前と住所を含むメーリング リストを作成します。そのためには、"前回の注文" クエリの出荷日フィールドに抽出条件を適用します。この抽出条件では、出荷日フィールドの日付が、新しいカタログの配布を開始した日付よりも前になるように指定します (たとえば、2006 年 3 月 31 日)。このクエリを実行すると、新しいカタログを受け取っていない顧客だけを含むメーリング リストが取得されます。

しかし、同じ状況が再び発生するとどうなるでしょう。抽出条件で指定されている値を変更することによってクエリのデザインを変更することも考えられますが、クエリで日付の入力を求め、その日付を使用してメーリング リストに含める顧客を決定すると便利です。これをクエリで行うには、パラメーターと呼ばれる特殊な抽出条件を使用します。

パラメーター クエリによって提供されるダイアログ ボックスは、目的によっては十分でないこともあります。その場合には、パラメーター収集により適したフォームを作成できます。ここでは、レポート パラメーターを収集するフォームを作成する方法について説明します。

この記事は、クエリの作成に習熟しているユーザーを対象としています。次に進む前に、少なくとも選択クエリの作成について理解してください。

選択クエリの作成方法の詳細については、「クエリの概要」を参照してください。

ここでは、クエリでのパラメーターの使用例を示します。抽出条件の指定に関する包括的な参照情報は含まれません。

抽出条件の指定方法の詳細については、「クエリの抽出条件の例」を参照してください。

ページの先頭へ ページの先頭へ

クエリでパラメーターを使用する

クエリでパラメーターを使用することは、抽出条件を使用するクエリを作成するのと同様に簡単です。1 つの情報 (部品番号など) または複数の情報 (2 つの日付など) の入力を求めるクエリを定義できます。パラメーター クエリでは、パラメーターごとに、そのパラメーターの値の入力を求める個別のダイアログ ボックスが表示されます。

パラメーターをクエリに追加する

  1. 選択クエリを作成し、クエリをデザイン ビュー (デザイン ビュー: データベース オブジェクトのデザインを表示するビュー。テーブル、クエリ、フォーム、レポート、およびマクロで使用できます。デザイン ビューでは、新しいデータベース オブジェクトの作成や、既存のオブジェクトのデザイン変更を行うことができます。)で開きます。
  2. パラメーターを適用するフィールドの [抽出条件] 行に、パラメーターを指定するダイアログ ボックスに表示するテキストを入力し、角かっこで囲みます。たとえば、次のように入力します。

[開始日]

このパラメーター クエリを実行すると、プロンプト (角かっこを除く) がダイアログ ボックスに表示されます。

パラメーター プロンプトでは、次のような式を使用することもできます。

Between [開始日] And [終了日]

 メモ   パラメーター プロンプトごとに、個別のダイアログ ボックスが表示されます。 2 番目の例では、2 つのダイアログ ボックス (開始日と終了日に対して 1 つずつ) が表示されます。

  1. パラメーターを追加する各フィールドについて、手順 2. を繰り返します。

前の手順に従って、次のいずれかのクエリにパラメーターを追加できます。

  • 選択
  • クロス集計
  • 追加
  • テーブル作成
  • 更新

ユニオン クエリにパラメーターを追加する

ユニオン クエリにパラメーターを追加することもできます。

  1. ユニオン クエリを SQL ビューで開きます。
  2. パラメーターの入力を求める各フィールドが含まれる WHERE 句を追加します。

WHERE 句が既に存在する場合は、パラメーター プロンプトを使用するフィールドが句に含まれているかどうかを確認し、含まれていなければ追加してください。

  1. WHERE 句で抽出条件を使用する代わりに、パラメーター プロンプトを使用します。

フィールドの値の一部をパラメーター文字列と照合する

クエリでパラメーターを適用する方法に少し幅を持たせることもできます。たとえば、文字列を受け取り、その文字列をフィールドの一部と照合するクエリが必要になることがあります。その場合は、"Like" キーワードとワイルドカード文字の組み合わせを使用します。たとえば、原産国/地域の入力を求め、関連するフィールド値がそのパラメーター文字列を含む場合に一致するクエリを作成できます。これを行うには、次の操作を行います。

  1. 選択クエリを作成し、クエリをデザイン ビューで開きます。
  2. パラメーターを適用するフィールドの [抽出条件] 行に、「Like "*"&[」と入力し、プロンプトとして使用するテキストを入力し、最後に「]&"*"」と入力します。

このパラメーター クエリを実行すると、ダイアログ ボックスには、"Like" キーワードおよびワイルドカード文字を除いた角かっこ内のテキストがプロンプトとして表示されます。

  1. パラメーターを受け取ったクエリは、パラメーター文字列を含む値の照合を行います。たとえば、パラメーター文字列 us は、パラメーター フィールドの値が Australia の行および値が USA の行に一致します。

"Like" キーワードとワイルドカード文字を使用すると、フィールド値の先頭または末尾にパラメーターを一致させることができます。パラメーターをフィールド値の先頭に一致させるには、左角かっこよりも前の引用符、ワイルドカード文字、およびアンパサンド (&) を削除します。パラメーターをフィールド値の末尾に一致させるには、右角かっこよりも後のアンパサンド、引用符、およびワイルドカード文字を削除します。

等しくない値に基づく照合

パラメーターを収集する際に、値が一致する行を返すクエリではなく、他の比較で true と評価された行を返すクエリが必要になる場合があります。たとえば、年を要求したときにその値がパラメーター文字列よりも大きい場合に行が返されるようにしたいとします。そのためには、>[Year:] のように、パラメーター プロンプトを囲む最初の角かっこの左側に比較演算子を入力します。

ページの先頭へ ページの先頭へ

パラメーターのデータ型を指定する

パラメーターが受け入れるデータ型を指定することもできます。任意のパラメーターにデータ型を指定できますが、特に、数値、通貨、または日付と時刻のデータに対してデータ型を指定することが重要です。パラメーターが受け入れるデータ型を指定した場合、ユーザーが間違ったデータ型を入力すると (通貨が必要な場合にテキストを入力するなど)、わかりやすいエラー メッセージが表示されます。

 メモ   テキスト データを受け取るようにパラメーターが構成されている場合、入力はすべてテキストとして解釈され、エラー メッセージは表示されません。

クエリのパラメーターのデータ型を指定するには、次の手順に従います。

  1. クエリをデザイン ビューで開き、[デザイン] タブの [表示/非表示] で [パラメーター] をクリックします。
  2. [クエリ パラメーター] ダイアログ ボックスの [パラメーター] 列に、データ型を指定する各パラメーターのプロンプトを入力します。各パラメーターが、クエリ デザイン グリッドの [抽出条件] 行で使用するプロンプトと一致していることを確認してください。
  3. [データ型] 列で、各パラメーターのデータ型を選択します。

ページの先頭へ ページの先頭へ

パラメーターを収集するフォームを作成する

 メモ   Web データベースでは、フォームを使用してクエリ パラメーターを収集できません。

パラメーター クエリには、パラメーターを収集するための組み込みのダイアログ ボックスが用意されていますが、このダイアログ ボックスでは基本的な機能しか提供されません。パラメーターを収集するフォームを作成することにより、次の機能が得られます。

  • 日付のカレンダー コントロールなど、データ型固有のコントロールを使用する機能
  • 収集したパラメーターを複数のクエリで使用できるようにするための永続性
  • 使用可能なデータ値の一覧から値を選択できる、パラメーター コレクションのためのコンボ ボックスとリスト ボックスを提供する機能
  • クエリを開いたり再表示したりする機能など、その他の関数のコントロールを提供する機能

パラメーターを収集するフォームを作成するには、次の手順に従います。



手順 1: 入力を受け取るフォームを作成する

  1. [作成] タブの [フォーム] で、[フォーム デザイン] をクリックします。
  2. デザイン ビューで F4 キーを押してプロパティ シートを表示し、次の表に従って、フォームのプロパティを指定します。
プロパティ 設定値
Caption/標題 フォームのタイトル バーに表示する名前を入力します。
Default View/既定のビュー 単票フォーム
Allow Form View/フォームビューの許可 はい
Allow Datasheet View/データシートビューの許可 いいえ
Allow PivotTable View/ピボットテーブルビューの許可 いいえ
Allow PivotChart View/ピボットグラフビューの許可 いいえ
Scroll Bars/スクロールバー どちらもなし
Record Selectors/レコードセレクター いいえ
Navigation Buttons/移動ボタン いいえ
Border Style/境界線スタイル ダイアログ
  1. フォームで収集する各パラメーターについて、[デザイン] タブの [コントロール] で [テキスト ボックス] をクリックします。
  2. 次の表に従って、テキスト ボックスのプロパティを設定します。
プロパティ 設定値
Name/名前 パラメーターを説明する名前を入力します (たとえば "開始日")。
Format/書式 パラメーター フィールドのデータ型を反映する書式を選択します。たとえば、日付フィールドに対して [日付 (標準)] を選択します。
  1. 名前を付けてフォームを保存します (たとえば "日付範囲")。

手順 2: パラメーター フォームが既に読み込まれているかどうかを判定するモジュールを作成する

  1. [作成] タブの [マクロとコード] で [モジュール] をクリックします。

新しいモジュールが Visual Basic エディターで開きます。

  1. 次のコードを 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
  1. モジュールを保存し、Visual Basic エディターを閉じます。

手順 3: フォームを制御するマクロ グループを作成する

  1. [作成] タブの [マクロとコード] で [マクロ] をクリックします。
  2. [デザイン] タブの [表示/非表示] で [すべてのアクションを表示] をクリックします。
  3. マクロ オブジェクト タブを右クリックし、[上書き保存] をクリックします。
  4. [マクロ名] ボックスに名前 (たとえば "Open Dialog") を入力し、[OK] をクリックします。
  5. [新しいアクションの追加] の横にあるドロップダウン矢印をクリックし、[フォームを開く] をクリックします。このアクションは、前の手順で作成したパラメーター フォームを開くために使用します。

"OpenForm/フォームを開く" アクションと引数が表示されます。

  1. アクションの引数は、次の表に示すように設定します。
引数 設定値
フォーム名 パラメーター フォームの名前を入力します。
ビュー フォーム
データ モード 編集
ウィンドウ モード ダイアログ
  1. [新しいアクションの追加] の横にあるドロップダウン矢印をクリックし、[If] をクリックします。
  2. "If/条件" アクションで、[If] の横のボックスに「Not IsLoaded」と入力し、続けてレポート パラメーター フォームの名前を引用符とかっこで囲んで入力します。たとえば、フォームの名前が "日付範囲" の場合は、「Not IsLoaded("日付範囲")」と入力します。
  3. "If/条件" アクションで、[新しいアクションの追加] の横にあるドロップダウン矢印をクリックし、[イベントの取り消し] をクリックします。
  4. マクロを保存して閉じます。
  5. 手順 1. ~ 3. を繰り返して、新しいマクロを作成します。この新しいマクロには、"Close Dialog" などの名前を付けてください。
  6. [新しいアクションの追加] の横にあるドロップダウン矢印をクリックし、[ウィンドウを閉じる] をクリックします。このアクションは、クエリでパラメーター フォームを閉じるために使用します。
  7. アクションの引数は、次の表に示すように設定します。
引数 設定値
オブジェクトの種類 フォーム
オブジェクト名 パラメーター フォームの名前を入力します。
オブジェクトの保存 いいえ
  1. マクロを保存して閉じます。
  2. 手順 1. ~ 3. を繰り返して、新しいマクロをもう 1 つ作成します。この新しいマクロには、"OK" などの名前を付けてください。
  3. [新しいアクションの追加] の横にあるドロップダウン矢印をクリックし、[値の代入] をクリックします。このアクションは、ユーザーが [OK] をクリックしたときにレポート パラメーター フォームを非表示にするために使用します。
  4. アクションの引数は、次の表に示すように設定します。
引数 設定値
アイテム [表示]
いいえ
  1. 手順 1. ~ 3. を繰り返して、新しいマクロをもう 1 つ作成します。この新しいマクロには、"Cancel" などの名前を付けてください。
  2. [新しいアクションの追加] の横にあるドロップダウン矢印をクリックし、[ウィンドウを閉じる] をクリックします。このアクションは、ユーザーが [キャンセル] をクリックしたときにパラメーター フォームを閉じるために使用します。
  3. アクションの引数は、次の表に示すように設定します。
引数 設定値
オブジェクトの種類 フォーム
オブジェクト名 パラメーター フォームの名前を入力します。
オブジェクトの保存 いいえ

手順 4: フォームに [OK] コマンド ボタンと [キャンセル] コマンド ボタンを追加する

  1. パラメーター フォームをデザイン ビューで再び開きます。
  2. [デザイン] タブの [コントロール] で [コントロール ウィザードの使用] タブが選択されていないことを確認します。
  3. [デザイン] タブの [コントロール] で [ボタン] をクリックします。
  4. フォームのテキスト ボックスの下をマウスでポイントし、ドラッグして [OK] コマンド ボタンを作成します。
  5. プロパティ シートが表示されていない場合は、F4 キーを押して表示します。
  6. 次の表に従って、[OK] ボタンのプロパティを設定します。
プロパティ 設定値
名前 OK
標題 OK
既定値 はい
OnClick マクロの名前を入力します (たとえば "Date Range.OK")。
  1. [キャンセル] コマンド ボタンを作成し、次の表に従って、プロパティを設定します。
プロパティ 設定値
名前 Cancel
標題 キャンセル
OnClick マクロの名前を入力します (たとえば "Date Range.Cancel")。
  1. フォームを保存して閉じます。

手順 5: フォーム データをクエリ抽出条件として使用する

  1. クエリをデザイン ビューで開きます。
  2. データの抽出条件を設定します。フォーム オブジェクト、フォームの名前、およびコントロール (コントロール: アプリケーションを制御するときに使用するテキスト ボックス、チェック ボックス、スクロール バー、またはコマンド ボタンなどの GUI (graphical user interface) オブジェクト。コントロールを使用して、データや選択肢の一覧を表示したり、コマンドを実行したり、ユーザー インターフェイスの体裁を整えたりします。)の名前を使用します。
    • たとえば、Access データベース (.accdb または .mdb) の "日付範囲" フォームでは、次の式を使用して、クエリの "開始日" や "終了日" というコントロールを参照します。

Between [Forms]![日付範囲]![開始日] And [Forms]![日付範囲]![終了日]

ページの先頭へ ページの先頭へ

 
 
適用対象:
Access 2010