访问表单按钮以生成和过滤现有报告

时间:2012-12-13 16:16:14

标签: ms-access

我有一个表单,为我的用户提供休假时间摘要(Associate Summary)。我还有一个报告,以报告格式生成电子邮件和打印的摘要信息(摘要)。两者都可以根据ComboBox选择单个用户的摘要独立工作,并且报告会对所有用户产生影响。我正在寻找一种方法来在窗体(关联摘要)上放置一个命令按钮,以打开并过滤报告(摘要)到当前显示在窗体(关联摘要)上的用户名。我用命令按钮修改了我的表单并添加了这段代码。

Private Sub Command22_Click()
   DoCmd.OpenReport "Summary", acViewPreview, , "Name = " & Me.Combo8     
End Sub

除了要求我输入报告的名称外,这个工作没有用。然后它就像我想要的那样生成。我尝试调整到一个不是组合框的字段,假设与组合框关联的多个值是问题。

Private Sub Command22_Click()
   DoCmd.OpenReport "Summary", acViewPreview, , "Name = " & Me.Text12     
End Sub

Text12是一个用逗号连接两个字段的表达式。

=[Last] & ", " & [First]
result... Doe, John

当我现在使用命令按钮时,我收到一个调试,出现以下错误。

Run-Time error '3075':
Syntax error (comma) in query expression '(Name = Doe, John)'.

...思想

1 个答案:

答案 0 :(得分:2)

使用OpenReport方法的WhereCondition参数来过滤报告的记录来源。

因此,假设表单有一个名为txtUserName的文本框,并且报表的记录源包含一个名为user_name的字段,请在命令按钮的单击事件过程中使用以下内容:

DoCmd.OpenReport "YourReportName", _
    WhereCondition:="user_name='" & Me.txtUserName & "'"

实际上,通过使用字符串变量来保存 WhereCondition ,您可以更轻松地进行故障排除。

Dim strWhere AS String
strWhere = "user_name='" & Me.txtUserName & "'"
Debug.Print strWhere ' <-- use Ctrl+g to open Immediate window and view this
DoCmd.OpenReport "YourReportName", WhereCondition:=strWhere