OpenArgs 未将变量传递给报告

Posted

技术标签:

【中文标题】OpenArgs 未将变量传递给报告【英文标题】:OpenArgs not passing variable to report 【发布时间】: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 【参考方案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

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

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

【讨论】:

以上是关于OpenArgs 未将变量传递给报告的主要内容,如果未能解决你的问题,请参考以下文章

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

MS Access 2007 - OpenArgs 没有将值传递给下一个表单?

批处理文件未将文件内容分配给变量

Excel 未将“Mar 2017”解释为日期变量

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

wpf 出现错误 System.NullReferenceException:“未将对象引用设置到对象的实例“