Muli-Option MS Access报告

时间:2013-04-09 19:17:46

标签: database ms-access report ms-access-2010

我是MS Access的新手,但他已经(松散地)在DB上工作了一段时间。我们有一个跟踪会员资格的数据库。这里有一张包含所有会员信息的表格。当添加新客户和当前客户或为当前年度付款时,该信息将应用于“PaidYear”列。多年来,我一直在添加一个查询,列出当前年份的成员,并添加一个显示查询输出的报告。

我想创建一个报告,我可以(使用下拉菜单)选择活动年份和其他选项,例如城市,公司名称,电话号码等。有什么方法可以简单地设置它吗?它必须足够容易让我的替换品直观地使用。即:

[选择年份]的成员报告< - 下拉

[城市] [公司] [电话] [选择选项]< ---报告的额外选项

我已经玩了一段时间,虽然我可以设置设计,但我无法设置功能。非常感谢你!!!

1 个答案:

答案 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方法中的参数。

希望这有帮助。