我是MS Access的新手,但已经(松散地)在数据库上工作了一段时间。我们有一个追踪会员资格的数据库。有一个表格,里面有所有的会员信息。当添加新客户和当前客户时,或为本年度支付费用时,该信息将应用于“PaidYear”列。多年来,我一直在添加一个列出当前年份成员的查询,并添加一个显示查询输出的报告。
我想创建一个报告,我可以在其中(可能使用下拉菜单)选择活动年份和其他选项,如城市、公司名称、电话号码等。有什么方法可以简单地进行设置吗?它必须足够简单,以便我的替代品能够直观地使用。即:
选择年份成员报表<--下拉列表
城市电话<-报告的额外选项
我已经使用它一段时间了,虽然我可以设置设计,但我不能设置功能。非常感谢!
发布于 2013-04-10 10:17:13
是的,如果你想过滤你的报表,你可以写一点VBA来打开你的带有过滤器的报表(你不需要使用参数查询。在查询执行级别执行此操作可能更有效,但据我所知,性能与只运行完整查询并在打开的报告运行时对其进行过滤是相同的(Access可能实际上只是在幕后执行此操作,我也不是很清楚。
不管怎样,让我们开始吧。这里有一段代码片段,您可以将其用作起点并进行调整。
创建一个显示'Run Report‘的按钮,我们将其命名为cmdRunReport
在该按钮的On Click事件中,您将放入一些代码。我现在只是在写这篇文章,所以我可能有一些语法错误(在这台电脑上没有访问权限)。
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这是你所能做的事情的基础。我可能有几个if语法错误,并错误地连接了过滤字符串(未测试),但这就是您可以开始的地方。
在英语中,它只查看您用来过滤的表单的下拉列表。它检查它们是否不为空,然后将它们的值连接到“过滤”字符串中。此字符串用作OpenReport方法中的参数。
希望这能有所帮助。
https://stackoverflow.com/questions/15910644
复制相似问题