是的,如果你想过滤你的报告,你可以写一点 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
这是你能做什么的基础。如果语法错误并且不正确地连接过滤字符串(未经测试),我可能有几个,但这就是您可以开始的地方。
在英语中,它只查看用于过滤的表单下拉列表。它检查它们是否不为空,然后将它们的值连接到“过滤”字符串中。此字符串用作 OpenReport 方法中的参数。
希望这可以帮助。