我是MS Access的新手,但他已经(松散地)在DB上工作了一段时间。我们有一个跟踪会员资格的数据库。这里有一张包含所有会员信息的表格。当添加新客户和当前客户或为当前年度付款时,该信息将应用于“PaidYear”列。多年来,我一直在添加一个查询,列出当前年份的成员,并添加一个显示查询输出的报告。
我想创建一个报告,我可以(使用下拉菜单)选择活动年份和其他选项,例如城市,公司名称,电话号码等。有什么方法可以简单地设置它吗?它必须足够容易让我的替换品直观地使用。即:
[选择年份]的成员报告< - 下拉
[城市] [公司] [电话] [选择选项]< ---报告的额外选项
我已经玩了一段时间,虽然我可以设置设计,但我无法设置功能。非常感谢你!!!
答案 0 :(得分:0)
是的,如果你想过滤你的报告,你可以写一点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
这是你可以做的事情的基础。我可能有一些if语法错误并且错误地连接了过滤字符串(未经测试),但这就是你可以开始的地方。
在英语中,它只是查看您用来过滤的表单下拉列表。它检查它们是否为空,然后将它们的值连接到“过滤”字符串。此字符串用作OpenReport方法中的参数。
希望这有帮助。