Ms access 用于生成和筛选现有报告的访问表单按钮

Ms access 用于生成和筛选现有报告的访问表单按钮,ms-access,Ms Access,我有一个表单,为我的用户提供休假时间的摘要(关联摘要)。我还有一个报告,它以报告格式生成摘要信息,用于发送电子邮件和打印(摘要)。两者都可以独立工作,摘要根据组合框选择单个用户,报表将提取所有用户。我正在寻找一种方法,在表单(关联摘要)上放置一个命令按钮,以打开报表(摘要)并将其过滤为当前显示在表单(关联摘要)上的用户名。我用一个命令按钮修改了我的表单,并添加了这段代码 Private Sub Command22_Click() DoCmd.OpenReport "Summary", ac

我有一个表单,为我的用户提供休假时间的摘要(关联摘要)。我还有一个报告,它以报告格式生成摘要信息,用于发送电子邮件和打印(摘要)。两者都可以独立工作,摘要根据组合框选择单个用户,报表将提取所有用户。我正在寻找一种方法,在表单(关联摘要)上放置一个命令按钮,以打开报表(摘要)并将其过滤为当前显示在表单(关联摘要)上的用户名。我用一个命令按钮修改了我的表单,并添加了这段代码

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)'.

想法…

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

因此,假设表单有一个名为
txtUserName
的文本框,并且报告的记录源包含一个名为
user\u name
的字段,请在命令按钮的单击事件过程中使用类似的方法:

DoCmd.OpenReport "YourReportName", _
    WhereCondition:="user_name='" & Me.txtUserName & "'"
实际上,通过使用字符串变量来保存WhereCondition,您可以更轻松地进行故障排除

Dim strWhere AS String
strWhere=“user_name=”&Me.txtUserName&“

调试。打印strWhere'HansUP,这有帮助,但我还没有。请看我对原始问题的更新。HansUp,我知道这就是答案。然而,我在数据库的设计中发现了一些缺陷。我要回去重组,然后我知道这会奏效。谢谢你的耐心和帮助!!!好的,这就是我现在的位置。。。Private Sub rptPre_Click()在出现错误时转到Err rptPre_单击Dim stDocName作为字符串stDocName=“Summary”DoCmd.OpenReport stDocName,acPreview,uuuCondition:=“UserName=”&Me.txtexsername&“”退出\u rptPre\u单击:退出子项错误\u rptPre\u单击:MsgBox错误。说明继续退出\u rptPre\u单击结束子项仍不将名称包含在报告中。使用此代码,我返回到输入参数值MsgBox。我已经验证了代码中是否设置了显式选项。另一个有趣的问题是,当我调试代码时,我会在Me.txtUserName&“'”代码行中看到我的用户名,最重要的是,现在报告会显示每条记录。。。啊!
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