3

現在、複数の集計クエリ (主にさまざまなものの合計とカウント) が必要なレポートを作成しています。

メイン レポートを作成し、個々のクエリを含むサブレポートを作成しました。これらのクエリにはすべて、日付範囲のパラメーターがあります (同じになります)。

そのため、レポートを表示すると、同じパラメーター (開始日と終了日) について約 12 回要求されます。この問題の効果的な解決策は何ですか?

私が使用することを計画していた醜い回避策 (より良い解決策がないため) は、クエリがフォーム値を参照するようにすることです。例 :

SELECT count(*) FROM tblTests 
WHERE testdate >= [Forms]![formReportParams]![startDate] 
    AND testDate <= [Forms]![frmReportParams]![EndDate]

個別のサブレポートのすべてのクエリが同じクエリ パラメータを共有できるようにする、ずさんでないソリューションはありますか?

4

1 に答える 1

1

開始日と終了日に別々の関数を作成し、それらの関数をクエリWHERE句で使用できます。

Function GetStartDate(Optional ByVal pReset As Variant) As Date
    Static dteStart As Date
    If Not IsMissing(pReset) Then
        dteStart = pReset
    End If
    GetStartDate = dteStart
End Function

関数の静的な日付値を初期化すると、再度変更するまで戻り値として保持されます。(ただし、現在の Access アプリケーション セッションでのみ保持されます。)

GetStartDate #2012-01-01#

次に、クエリで関数を使用します。

SELECT count(*) FROM tblTests 
WHERE testdate >= GetStartDate();

についても同じことを行いGetEndDate()ます。

于 2012-11-09T19:42:18.463 に答える