2

したがって、レコードを作成する(そしてそれを記録する)サブフォームがあり、データ入力用に別のサブフォームが開きます...ただし、開いている引数を使用して、これらのサブフォーム間で値(ProjectID)を渡すことはできます。

フォームでこれを行う方法は正確に知っていますが、サブフォームでこれを試すのは少し異なります。

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

しかし、このようにすることはできません:

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

ええ、正しい方法を知っている人にとっては、上記はばかげているように見えるかもしれませんが、これは私がやろうとしていることを正確に示していると思いました.

では、どうすれば値を渡すことができますか? フォームの代わりにサブフォームを使用する必要がありますか? または、最初のサブフォームで作成された場合でも、この変数は私の値を保持しますか?

ありがとうジャスティン

4

2 に答える 2

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"
于 2011-06-05T04:38:41.027 に答える
1

OpenArg を渡す方法はないと思いますSourceObject =

SourceObject を設定した後、値をコントロールに割り当てることはできますか?

Me.MyChild.SourceObject = "SecondSubForm"
Me.MyChild!SomeControl = PassingValue
于 2010-11-06T04:54:38.713 に答える