MS Access 2007 - OpenArgs 没有将值传递给下一个表单?
Posted
技术标签:
【中文标题】MS Access 2007 - OpenArgs 没有将值传递给下一个表单?【英文标题】:MS Access 2007 - OpenArgs not passing the value to next form? 【发布时间】:2010-07-24 15:37:09 【问题描述】:所以我将 ID 值从一个表单传递到下一个表单使用
Docmd.OpenForm "SecondForm",,,,,, MainID
Docmd.Close AcForm, "FirstForm", acSaveYes
然后我检查第二个表单的加载事件的值:
MainID = val(Me.OpenArgs)
当我调试并逐步完成时,我将鼠标悬停在它上面,可以看到它包含一个值
然后我在第二个表单上有一个按钮单击事件,它应该重复该过程,但是当我运行以下内容时
Dim rs as DAO.Recordset
Dim dbs as DAO.Database
Set dbs = CurrentDB
Set MyRS = dbs.OpenRecordset("tblMain")
If MyRS!MainID = MainID THen
之后是一些 rs.edit 等内容....例程甚至没有做到那么远。一旦我进行相同的调试和悬停,这里的值就是空的。有什么我遗漏的,因为我可以看到表单加载事件的值,但是一旦我尝试在另一个操作中使用它,它就是 MIA
谢谢 贾斯汀
【问题讨论】:
【参考方案1】:听起来可能是范围问题。 MainID 在哪里声明?
如果您在 Form Open 过程中声明它,那么一旦该过程完成,它就会消失。
考虑更改按钮的单击事件过程。
If MyRS!MainID = Val(Me.OpenArgs) Then
OpenArgs 在表单加载后不会“消失”。我不明白为什么需要将 OpenArgs 存储到 MainID 变量中。您可以在使用 MainID 变量的地方使用 Val(Me.OpenArgs)。
或者,您可以将 MainID 设置为模块级别的变量,以便您的所有表单过程都可以使用它。
更新:在任何情况下,您可能会打开表单而不为其提供 OpenArgs 的值?如果是这样,Val(Me.OpenArgs) 将返回 0。这会是您的应用程序逻辑中的错误条件吗?当未提供 OpenArgs 值时,您的命令按钮是否应该是“可点击的”(启用)?
【讨论】:
以上是关于MS Access 2007 - OpenArgs 没有将值传递给下一个表单?的主要内容,如果未能解决你的问题,请参考以下文章
在 Access VBA 中使用 openargs 搜索报告的问题
ms-access 2007 运行时和 lockWindowUpdate