1

フォームがAccessで既に開いている場合、Openargsの値を変更することはできますか?フォームを初めて開いたときにのみ機能します。フォームの失敗はすでに開いています。

編集:

フォームのonActivateイベントにこのコードがあります

If Not IsNull(Me.OpenArgs) Then
    Me.Recordset.FindFirst ("Id =" & Me.OpenArgs)
    If Me.Recordset.NoMatch Then
        MsgBox "ISOS not found"
    End If
End If

Me.OpenArgsこのコマンドDoCmd.OpenForm "<Form_Name>", acNormal, , , , acWindowNormal, Forms!Lookup_Form!Idを使用してメインフォームを開く別のフォームでの検索結果が含まれます。

4

2 に答える 2

4

最近、自分が取り組んでいるプロジェクトで同じ問題を解決しなければならなかったので、思いついた解決策を提案したいと思いました。

この状況で私が見つけた最も簡単なことは、DoCmd.OpenFormの直前にDoCmd.Closeを呼び出すことです。これにより、フォームの現在のインスタンスが閉じられ、新しいインスタンスが開かれます。これにより、Form_Loadイベントが新しい引数で再度発生します。

DoCmd.Close acForm, "Form2", acSaveNo
DoCmd.OpenForm "Form2", acNormal, , , , , {arg1}|{arg2}

ここでの2つの前提条件は次のとおりです。1。「Form2」の状態は常にForm_Loadイベントのコードによって初期化されていること。2.「Form2」には、新しい引数を渡すときに保持しようとしている状態データがありません。

于 2015-07-31T03:47:10.920 に答える
3

次のように、検索フォームからコードを実行するのはどうですか。

Dim frm As Form

If Not CurrentProject.AllForms("Form1").IsLoaded Then
    DoCmd.OpenForm "Form1"
End If

Set frm = Forms!Form1
frm.Recordset.FindFirst ("Id =" & Me.ID)
If frm.Recordset.NoMatch Then
    MsgBox "ISOS not found"
End If
于 2012-12-17T17:38:27.403 に答える