0

所以我将 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

谢谢贾斯汀

4

1 回答 1

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 值时,您的命令按钮是否应该是“可点击的”(启用)?

于 2010-07-24T16:51:54.007 回答