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