1

我有一个表格,可以为我的用户提供休假时间的摘要(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)'.

想法...

4

1 回答 1

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
于 2012-12-13T16:21:27.487 回答