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

时间:2016-12-09 10:42:07

标签: ms-access ms-access-2010

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

使用以下表达式:

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

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

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

3 个答案:

答案 0 :(得分:1)

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

如果表单已加载,此函数将返回true;

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, '')

答案 1 :(得分:0)

是的,使用功能:

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

答案 2 :(得分:0)

我用这个:

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