MS Access 查询:检查表单是否打开/检查参数是否需要输入

MS Access Query : Check if form is open / Check if parameter requires input

我目前正在尝试在 MS Access 查询(使用 GUI 工具,而不是 SQL 工具)中检查特定表单是否打开,而不使用 VBA.

使用以下表达式:

Expr1 : [Formulaires]![Form1].[Visible]

如果 Form1 打开,查询工作正常,但如果 Form1 关闭,它要求输入,因为 Form1 没有打开,变量不再存在。

有没有办法检查特定表单是否打开,或者检查某个变量是否需要输入?

您需要一个 VBA 函数来发现这一点,但您可以从查询中调用该函数并将结果合并到您的公式中。

如果表单已加载,此函数将 return 为真;

Function IsFormLoaded(strForm As String) As Boolean

Dim frm As Form

For Each frm In Forms
    If frm.Name = strForm Then
        IsFormLoaded = True
        Exit Function
    End If
Next

End Function

然后您可以在 IIF 语句中使用该函数;

IIF(IsFormLoaded('MyForm'), MyForm.Control.Value, '')

是,使用函数:

Public Function IsFormLoaded(ByVal strForm As String) As Boolean

    Dim frmForm     As Form
    Dim booLoaded   As Boolean

    For Each frmForm In Forms
        If frmForm.Name = strForm Then
            booLoaded = True
            Exit For
        End If
    Next

    IsFormLoaded = booLoaded

    Set frmForm = Nothing

End Function

我用这个:

If IsOpen("FormName") Then 
DoCmd.Close acForm, "FormName"
End if

[将此函数放在单独的模块中]

Public Function IsOpen(fn As String) As Boolean 'returns True if form is open
If SysCmd(acSysCmdGetObjectState, acForm, fn) <> 0 Then IsOpen = True
End Function