ええ、レポートをフィルター処理したい場合は、少しの VBA を記述して、フィルターを使用してレポートを開くことができます (これにはパラメーター クエリを使用する必要はありません。クエリ実行レベルですが、私が気づいた限りでは、パフォーマンスは同じで、完全なクエリを実行し、実行時にレポートを開いてフィルタリングするだけです (Access は実際には舞台裏でこれを行うだけかもしれませんが、私はしません)。本当に知っています。
とにかく、それに行きましょう。これは、出発点として使用して適応できるコード スニペットです。
「レポートの実行」というボタンを作成し、それを呼び出しましょうcmdRunReport
On Click
そのボタンのイベントでは、いくつかのコードを配置します。今これを書いているところなので、構文エラーがあるかもしれません (この PC には Access がありません)。
dim multiple as boolean
dim filtering as string
filtering = ""
if me.yearDropdown is not null then
filtering = filtering + "[myYearField] = " & me.yearDropdown
multiple = true
end if
if me.cityDroPDown is not null then
if multiple then
filtering = filtering + "AND [myCityField] = '" & me.cityDropdown & "'"
else
filtering = filtering + " [myCityField] = '" & me.cityDropdown & "'"
set multiple = true
end if
end if
if me.CompanyDropDown is not null then
if multiple then
filtering = filtering + "AND [myCompanyField] = '" & me.CompanyDropdown & "'"
else
filtering = filtering + " [myCompanyField] = '" & me.CompanyDropdown & "'"
set multiple = true
end if
end if
DoCmd.OpenReport "yourReport", acViewPreview, , filtering
これができることの基本です。構文エラーが発生し、フィルタリング文字列が正しく連結されていない (テストされていない) 場合はいくつかあるかもしれませんが、そこから始めることができます。
英語では、フィルタリングに使用するフォームのドロップダウンを確認するだけです。それらが null でないかどうかをチェックし、それらの値を「フィルタリング」文字列に連結します。この文字列は、OpenReport メソッドのパラメーターとして使用されます。
お役に立てれば。