特定のレコードでフォームを開くには、WhereConditionを使用してDoCmd.OpenFormメソッドを使用できます。
最初のフォームにperson_IDのテキストボックスがあります。 これはコード内でme!person_IDと呼ばれます。
DoCmd.OpenForm "Form2", acNormal, , "person_ID = " & me!person_ID
これだけです。
もう少し進んだことがあれば、Form.OpenArgsフォームのフォームを使用できます。 以下のコードでは、OpenArgsが指定されていない限り、フォームを開くことができません。 これは必ずしも必要ではないかもしれないが、私は彼らが望むような経路でフォームを開くことができない。
その後、ボタンを「作成」の背後にあるコードのようなものになります:あなたは(Form2の)上の特定のレコードに開きたいフォームで
DoCmd.OpenForm "Form2", acNormal, , , , acNormal, me!person_ID
は、「オンオープン」に次のコードを使用しますイベント:
Private Sub Form2_Open(Cancel As Integer)
If IsNull(Me.OpenArgs) Then
MsgBox "Open from the first form, I won't work otherwise"
DoCmd.Close , "Form2"
Cancel = True
Exit Sub
End If
Me.Filter = "person_ID = """ & Me.OpenArgs & """"
Me.FilterOn = True
End Sub
フィルタは、今二番目の形式の「オンオープン」イベントに設定されているのではなく最初のフォームにWhereConditionによって供給されているイベント「クリックオン」ボタンを作成します。
デザインの選択肢として、単一のフォームを使用し、それぞれのフォームの代わりにタブを持つ「タブコントロール」を使用することを考えました。次のフォームを開く「作成」ボタンの代わりに、単にタブを変更します。
これは私の最初の投稿ですstackoverflow、私は良いですか?
おい、あなたはすごいよ!私はとても素早く対応してくれてうれしいです。さて、あなたからもう少しサポートが必要です。 私のデータベースは異なるレコードのために同じperson_IDを持つことができますが、主キーではないことが分かりました。したがって、フォームを特定のperson_IDにリダイレクトするのではなく、最初のページから追加した新しいIDであり、特定のレコードにデータを追加する必要があるため、フォームに追加された最後のレコードを開きます。 –
現在、フォームはデータベースの最初のエントリをロードします。 は、私が作成]ボタンで、次の追加: > DoCmd.GoToRecord、acNewRec > DoCmd.OpenForm "Fund_ValMain" と > DoCmd.GoToRecord、フォームのonloadイベントとしてacLast 。しかし、最後のレコードは常に読み込まれません。 私たちは問題に関して私的な会話ができ、私は製品のスクリーンショットを共有できます。私は本当にこれを理解する上であなたの指導を必要とします。 –
こんにちはShoumik Goswami、私はあなたが最後のレコードに行くことが判明したように、それは信頼できないと思う、注文は、例えば、ユーザーによって変更される可能性があります。もちろん、これは "On Open"イベントで変更することができます。最後のレコードが常に必要なレコードである場合は、フォームの再クエリーとリフレッシュを試みてください。可能であれば固有のフィールドを使用することをお勧めします。次に、正しいレコードがフォームで開かれるという事実を知っています。また、開いていないフォームが開いていた前のレコードを表示している場合は、再度開く前に、開いているフォームが閉じていることを確認してください。 – robv