在 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 没有将值传递给下一个表单?

OpenArgs 未将变量传递给报告

尝试在访问中打开新表单时,Me.OpenArgs 始终返回 null

使用 VBA 在 Access 数据库中处理外部 Access 数据库?

使用 VBA 在 Access 中复制

将替代 OpenArgs 传递给使用“新建”创建的访问表单