MS Access - открытый аргумент между вложенными формами?я могу передать значение?Нужно ли мне? - PullRequest
2 голосов
/ 06 ноября 2010

Итак, у меня есть подформа, которая создает запись (и записывает ее), а затем открывается другая подформа для ввода данных ... однако я все еще могу использовать открытый аргумент для передачи значения (ProjectID) между этими подформы.

Я точно знаю, как сделать это с формами, но пробовать это с помощью подчиненных форм немного по-другому.

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

, но не могу сделать это так:

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

так что да, вышесказанное может показаться нелепым для тех, кто знает правильный путь, но я подумал, что это точно иллюстрирует то, что я пытаюсь сделать.

Так как я могу передать значение?Мне даже нужно с субформами вместо форм?или эта переменная будет содержать мое значение, даже если она была создана в первой форме?

спасибо, Джастин

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Вместо использования скрытого элемента управления в качестве альтернативы вы можете добавить открытый метод или открытое свойство в дочернюю форму и затем вызвать его.

Лично я предпочитаю использовать метод, потому что обычно изменение свойства не должно иметь побочных эффектов.

Вот пример.

Дочерняя форма Called 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"
1 голос
/ 06 ноября 2010

Не думаю, что есть какой-либо способ передать OpenArg с SourceObject =

Может ли он работать для присвоения значения элементу управления после установки SourceObject?

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