2016-12-09 30 views
0

現在、特定のフォームが開いているかどうかを確認するためにMSツールのクエリ(GUIツールとSQLツールを使用) VBAを使用せずに、 Form1が開いている場合、クエリは正常に動作しますが、Form1が閉じている場合Form1が開いていないので、それは、入力を要求、および変数は」doesnのMS Access Query:フォームが開いているかどうかを確認する/パラメータに入力が必要かどうかを確認する

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

:次の式を使用して

もう存在しない。

特定のフォームが開いているかどうかを確認する方法や、特定の変数に入力が必要かどうかを確認する方法はありますか?

答えて

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

パーフェクトに仕上げる、高速で動作し、私が欲しいまさにありません。答えをありがとう、私はIFF関数について知りませんでした –

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 
+1

なぜCurrentProject.AllForms(strForm).IsLoaded'だけではなく、フォームをループするのですか? – GavinP

+0

これはまた、フォームコレクションをループしますが、_all_フォームだけがロードされます。したがって、ロードはそれほど時間がかかりません。さらに、プロパティ_CurrentView_をチェックすることによって、ロードされたフォームがデザインビューにないことを確認する機能を簡単に拡張することができます。 – Gustav

関連する問題