在 Access VBA 中使用 openargs 搜索报告的问题
Posted
技术标签:
【中文标题】在 Access VBA 中使用 openargs 搜索报告的问题【英文标题】:Problem with searching the report with openargs in Access VBA 【发布时间】:2018-10-17 00:32:07 【问题描述】:我在 MS Access 中有一个表单,在按钮单击事件中我运行了以下代码。我的目标是让用户在单击表单的按钮上输入一个值,然后使用 openargs 将该值发送到报告。我想在该查询中添加 openargs 参数,但是当我在输入框中输入一个值并按 Enter 键时,我得到一个名为“输入参数”的提示,要求我为报告中的所有字段输入值。我是 VBA 新手,不知道我做错了什么
表格
strInput = InputBox("Which value did you want to print?")
DoCmd.OpenReport "01-REPORT", acPreview, , , , OpenArgs = strInput
举报
在我的公开报告事件报告中,我有
Private Sub Report_Open(Cancel As Integer)
If Me.OpenArgs > 0 Then
Me.RecordSource = "PRINT FINAL DATA WHERE " & "InvNum = '" & Me.OpenArgs & "'"
End If
End Sub
*PRINT FINAL DATA * 是作为报告记录源的查询的名称。
【问题讨论】:
【参考方案1】:要打开包含过滤数据的报告,您可以这样做:
-
在报表
RecordSource
的设计视图中设置所有数据的查询
(你的*PRINT FINAL DATA *
)。并保存它。
对于点击处理程序中的表单,请写下这个(我省略了所有错误检查等)
strInput = InputBox("Which value did you want to print?")
DoCmd.OpenReport "01-REPORT", acPreview, , "InvNum = '" & strInput & "'"
OpenReport
的第四个参数是WhereCondition
,在做报告之前过滤数据。
附:并且报告会询问每个字段的值,因为您的报告在打开时没有在RecordSource
中保存值。或者查询没有这样的字段。
【讨论】:
谢谢!我不知道 DoCmd.OpenReport 可以选择添加 where 条件。但是按照你的代码在 openreport 行上给了我这个错误,其中 condidiotn "此表达式输入错误或太复杂无法计算" 1.检查手动打开时报告是否有效 2. 检查InvNum
是否是查询/表中的文本类型 3. 检查 WhereCondition
是什么没有错。以上是关于在 Access VBA 中使用 openargs 搜索报告的问题的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2007 - OpenArgs 没有将值传递给下一个表单?
尝试在访问中打开新表单时,Me.OpenArgs 始终返回 null