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}

这里的两个假设是: 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 回答