我目前正在尝试使用MS Access Query(使用GUI工具,而不是SQL工具)来检查特定表单是否打开,而不使用VBA。
使用以下表达式:
Expr1 : [Formulaires]![Form1].[Visible]
如果Form1打开,查询工作正常,但如果Form1关闭,它会要求输入,因为Form1不打开,变量不再存在。
有没有办法检查特定表格是否已打开,或检查某个变量是否需要输入?
答案 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