MS Access - 在子表单之间打开参数?我可以传递一个值吗?我需要吗?

时间:2010-11-06 02:32:50

标签: ms-access forms vba subform openargs

所以我有一个创建记录(并记录它)的子表单,然后打开另一个子表单进行数据输入...但是我仍然可以使用open arg来传递这些子目录之间的值(ProjectID)形式。

我确切知道如何使用表单执行此操作,但尝试使用子表单时会有所不同。

docmd.openform "FormExample",,,,,,Passingvalue

但不能这样做:

 me.MyChild.SourceObject = "SecondSubForm",,,,,,PassingValue

所以,对于那些知道正确方法的人来说,上述情况可能看起来很荒谬,但我认为这样可以说明我想要做的事情。

那我怎么能传递这个值呢?我甚至需要使用子表单而不是表单吗?或者这个变量是否会保留我的值,即使它是在第一个子表单中创建的?

感谢 贾斯汀

2 个答案:

答案 0 :(得分:1)

我认为没有办法通过SourceObject =

传递OpenArg

设置SourceObject后,是否可以将值赋给控件?

Me.MyChild.SourceObject = "SecondSubForm"
Me.MyChild!SomeControl = PassingValue

答案 1 :(得分:1)

您可以将公共方法或公共属性添加到子窗体,然后调用它,而不是使用隐藏控件作为替代。

我个人更喜欢使用方法,因为通常改变属性不应该有副作用。

这是一个例子。

名为SomeChildForm的子表单将具有此方法

Public Sub SetSomeValue(ByVal somestring As String)

     Me.Text1.Text = somestring 'or probably something to do with the record source

End Sub

从父母那里执行此操作

Dim frm As Form_SomeChildForm
Set frm = Me.SubFormControlName.Form
frm.SetSomeValue "x"