1

我对 MS Access 非常陌生,但已经(松散地)在数据库上工作了一段时间。我们有一个跟踪会员的数据库。有一张桌子,里面有所有的会员信息。当添加新客户和现有客户或为当年付款时,该信息将应用于“PaidYear”列。多年来,我一直在添加一个列出当前年份成员的查询,并添加一个显示查询输出的报告。

我想创建一个报告,我可以(可能使用下拉菜单)选择活动年份和其他选项,如城市、公司名称、电话号码等。有没有办法简单地设置它?我的替代品必须足够简单,才能直观地使用。IE:

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

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

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

4

1 回答 1

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

这是你能做什么的基础。如果语法错误并且不正确地连接过滤字符串(未经测试),我可能有几个,但这就是您可以开始的地方。

在英语中,它只查看用于过滤的表单下拉列表。它检查它们是否不为空,然后将它们的值连接到“过滤”字符串中。此字符串用作 OpenReport 方法中的参数。

希望这可以帮助。

于 2013-04-10T02:17:13.340 回答