一旦表单在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
打开主窗体的另一种形式的搜索结果。
答案 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;中没有状态数据。我在传递新论据时试图保留。