2010-07-24 80 views
0

所以我从一种形式传递的ID值到下一个使用MS Access 2007 - OpenArgs没有将值传递给下一个表单?

Docmd.OpenForm "SecondForm",,,,,, MainID 
Docmd.Close AcForm, "FirstForm", acSaveYes 

,然后我检查所述第二形式的加载事件的值:

MainID = val(Me.OpenArgs) 

,当我调试和通过I步骤将鼠标悬停在上面,可以看到它包含一个值

然后我在第二个窗体上有一个应该重复该过程的按钮单击事件,但是当我运行以下操作时

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声明在哪里?

如果您在表单打开过程中声明它,那么该过程完成后它就会消失。

考虑更改按钮的单击事件过程。

If MyRS!MainID = Val(Me.OpenArgs) Then 

OpenArgs在表单加载后不会“消失”。我不明白你为什么需要将OpenArgs存储到你的MainID变量中。你可以在你使用MainID变量的地方使用Val(Me.OpenArgs)。

或者,您可以使MainID成为模块级别变量,以便它可用于所有表单的过程。

更新:是否有任何情况下您可能会打开窗体而不为OpenArgs提供值?如果是这样,Val(Me.OpenArgs)将返回0.这是否是您的应用程序逻辑中的错误条件?当没有提供OpenArgs值时,您的命令按钮是否应该是“可点击”(启用)?

+0

谢谢汉斯......为我修好了它。 – Justin 2010-07-24 19:17:21

相关问题