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
我目前正在尝试在 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