在Access VBA中使用openargs搜索报表的问题

时间:2018-10-17 00:32:07

标签: ms-access access-vba

我在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 个答案:

答案 0 :(得分:0)

要打开包含过滤数据的报告,您可以执行以下操作:

  1. 在设计视图中,报表的RecordSource集查询包含所有数据 (您的*PRINT FINAL DATA *)。并保存它。
  2. 对于单击处理程序中的表单,请编写此代码(我忽略所有错误检查等)

    strInput = InputBox("Which value did you want to print?") DoCmd.OpenReport "01-REPORT", acPreview, , "InvNum = '" & strInput & "'"

OpenReport的第四个参数是WhereCondition,可在执行报告之前过滤数据。

P.S。报告要求提供每个字段的值,因为打开报告时,报告没有在RecordSource中保存值。或查询没有这样的字段。