表单已打开时的Openargs

时间:2012-12-17 16:51:16

标签: ms-access

一旦表单在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打开主窗体的另一种形式的搜索结果。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

我最近必须为我正在进行的项目解决同样的问题,所以我想我会提出我想出的解决方案。

在这种情况下,我发现最简单的事情就是在DoCmd.OpenForm之前调用DoCmd.Close。这将关闭窗体的当前实例并打开一个新窗体,这将强制使用新参数再次触发Form_Load事件。

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

这里的两个假设是:  1.状态&#34; Form2&#34;始终由Form_Load事件中的代码初始化。  2.&#34; Form2&#34;中没有状态数据。我在传递新论据时试图保留。