【问题标题】:OpenArgs not passing variable to reportOpenArgs 未将变量传递给报告
【发布时间】:2015-04-06 06:42:12
【问题描述】:

我对 VBA 很陌生,我正在尝试在发票创建表单上创建一个按钮来打印发票。按钮的 On Click 事件应打开一个报表并将表单上的 Invoice ID 分配给 openargs 属性。

Private Sub cmdPrint_Click()
Dim InvoiceNum As Integer

If Me.Dirty Then    'Save any edits.
    Me.Dirty = False
End If

If Me.NewRecord Then 'Check there is a record to print
    MsgBox "Select a record to print"
Else
    InvoiceNum = Me.[Invoice Number]
    DoCmd.OpenReport "Invoice", acViewPreview, , , , InvoiceNum
End If
End Sub

然后当报表打开时,它会运行代码:

Dim InvoiceNum As Integer
InvoiceNum = Me.OpenArgs

但是,当我单击表单上的按钮时,会出现输入参数框。奇怪的是,此框中的文本是我要分配给 OpenArgs 属性的发票编号的值。我不知道如何使 OpenArgs 的值成为表单中的发票编号。

我不确定我做错了什么,似乎无法在任何地方找到答案。 任何帮助将不胜感激。

【问题讨论】:

  • 它必须工作,所以其他事情正在发生。 1:在打开报表时引发的 OnLoad 和其他事件中查找代码。 2:尝试重命名变量。 3:尝试使用:InvoiceNum = Me![Invoice Number].Value

标签: vba ms-access openargs


【解决方案1】:

Dim InvoiceNum As Integer InvoiceNum = Me.OpenArgs

当您打开报表时,您声明了一个名为 InvoiceNum 的变量并将该变量的值设置为 Open Args,这看起来有些不对劲。我不确定您打算如何处理该变量。如果您的目标是按发票编号过滤发票,那么您应该尝试这样的事情...

me.filter = "[Invoice Number]= " & Me.OpenArgs

另外,我认为正在发生的事情是,您的表单上有一个未绑定的控件,其控件 Source 为 InvoiceNum,并且您正试图将其值设置为 OpenArgs。因为它是一个未绑定的控件,只要表单打开它就会给你一个参数框,因为InvoiceNum 不是表格上的一个字段。如果我是正确的并且这是正在发生的事情,您可以尝试通过在 Control 源中使用 =[OpenArgs] 并从表单的 OnLoad 事件中删除所有代码,将其 Control Source 直接设置为 Open Args。

【讨论】:

    【解决方案2】:

    您确定您的第一个表单上有一个名为 [Invoice Number] 的字段吗?如果是这样,请在 DoCmd.OpenReport 代码行上放置一个断点,然后使用即时窗口或鼠标悬停来确定 InvoiceNum 在该点的值。如果 InvoiceNum 不是您所期望的,请尝试将字段 [Invoice Number] 重命名(就我个人而言,我从不在字段名称中使用空格,这只会导致问题)并调整您的相应地编码。

    如果 InvoiceNum 看起来正确,请在您的 Invoice 报告中的 OpenArgs 语句中放置一个断点,然后查看它认为该点的值是什么。看起来您的代码是正确的,但是有些我们看不到的元素可能会影响您的变量。

    【讨论】:

      【解决方案3】:

      感谢你们的帮助。

      我对代码进行了更多修改,并在其中设置了断点。 结果发现问题不在于我想的 OpenArgs,而在于我在报告中如何使用它。 我将我在报告中放入 ID 的文本字段更改为标签并使用:

      InvoiceNum = Me.OpenArgs
          me.[label].caption = InvoiceNum
      

      我没有将我最初的问题添加到我的问题中,因为我认为我已经将其注释掉了。

      现在完美运行。 再次感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多