我有一个表单,为我的用户提供休假时间摘要(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)'.
...思想
答案 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