パラメータクエリーは、独自のダイアログボックスを表示して、レコードを取得するための条件やレポートフィールドの値といった情報の入力をユーザーに求めることができるクエリーです。ユーザーに複数の情報の入力を求めるクエリーも設計できます。たとえば、2つの日付を取得するクエリーを設計して、その間の日付に該当するすべてのレコードを取得することができます。
たとえば、パラメータクエリーに基づいて、月次収益のレポートを作成するとします。レポートを出力すると、C1Report はレポートに含める月の入力を求めるダイアログボックスを表示します。ユーザーが月を入力すると、C1Report は該当するレポートを出力します。
パラメータクエリーを作成するには、RecordSource プロパティの SQL 文を編集して、PARAMETERS 句を追加します。パラメータクエリーの作成に使用する構文は、Microsoft Access で使用される構文と同じです。
パラメータクエリーを作成する最も簡単な方法は、WHERE 句に1つ以上のアイテムがある簡単な SQL 文を元に、WHERE 句にある固定値を手作業でパラメータに置き換えることです。たとえば、次のような一般的な SQL 文を元にします。
strSQL = "SELECT DISTINCTROW * FROM Employees " & _
"INNER JOIN (Orders INNER JOIN [Order Subtotals] " & _
"ON Orders.OrderID = [Order Subtotals].OrderID) " & _
"ON Employees.EmployeeID = Orders.EmployeeID " & _
"WHERE (((Orders.ShippedDate) " & _
"Between #1/1/1994# And #1/1/2001#));"
次に、この SQL 文のうち、パラメータに変える部分を確認します。この例では、WHERE 句にある日付(太字の部分)をパラメータにします。これらのパラメータの名前を Beginning Date(開始日)および Ending Date(終了日)にします。これらの名前にはスペースが含まれているため、[ ]で囲む必要があります。
strSQL = "SELECT DISTINCTROW * FROM Employees " & _
"INNER JOIN (Orders INNER JOIN [Order Subtotals] " & _
"ON Orders.OrderID = [Order Subtotals].OrderID) " & _
"ON Employees.EmployeeID = Orders.EmployeeID " & _
"WHERE (((Orders.ShippedDate) " & _
"Between [Beginning Date] And [Ending Date]));"
最後に、パラメータ名、型、およびデフォルト値を含む PARAMETERS 句を使用して、SQL 文の先頭でパラメータを指定します。
strSQL = "PARAMETERS [Beginning Date] DateTime 1/1/1994, " & _
"[Ending Date] DateTime 1/1/2001;" & _
"SELECT DISTINCTROW * FROM Employees " & _
"INNER JOIN (Orders INNER JOIN [Order Subtotals] " & _
"ON Orders.OrderID = [Order Subtotals].OrderID) " & _
"ON Employees.EmployeeID = Orders.EmployeeID " & _
"WHERE (((Orders.ShippedDate) " & _
"Between [Beginning Date] And [Ending Date]));"
この文が実行されると、コントロールはユーザーにダイアログボックスを表示して、Beginning Date と Ending Date の値の入力を求めます。ユーザーが入力した値は SQL 文に組み込まれ、ユーザーが選択した期間を対象にしてレポートが生成されます。
ダイアログボックスは、C1Report によって臨機応変に作成されます。ダイアログボックスにはクエリー内のすべてのパラメータが含まれ、パラメータの型に適したコントロールが使用されます。たとえば、Boolean 型のパラメータにはチェックボックスが使用され、Date 型のパラメータには日時の選択コントロールが使用されます。上の SQL 文を実行して表示されるダイアログボックスを次に示します。
PARAMETERS 句は、各アイテムをカンマで区切ったリストで構成され、最後にセミコロン(;)を付けます。各アイテムは1つのパラメータを表し、次の情報を指定します。
値の型 | 説明 |
---|---|
Date | adDate |
DateTime | adDate |
Bit, Byte, Short, Long | adInteger |
Currency | adCurrency |
Single | adSingle |
Double | adDouble |
Text, String | adBSTR |
Boolean, Bool, YesNo | adBoolean |
パラメータクエリーは、次の手順で簡単に作成できます。最初に、正しく動作する簡単なクエリーを作成します。次に、PARAMETERS 句を追加します。PARAMETERS 句の最後にセミコロン(;)を付けることを忘れないでください。最後に、WHERE 句を編集して、適切な位置にパラメータ名を追加します。
GetRecordSource メソッドを使用すると、パラメータクエリーから(PARAMETERS 句がない)適切な SQL 文を取得できます。これは、レポートに含まれるデータを使って独自のレコードセットを作成する場合に便利です。