2016-03-28 3 views
0

前のフォームで選択した日付(開始日と終了日)に基づいてレコードをフィルタするクエリがあります。クエリが特定の日付範囲をフィルタ処理するか、フィールドが空白の場合はすべてのレコードを出力するようにします。特定のデータをフィルタリングするクエリ、または空白のフィルタを使用しないクエリ

私はSQLに精通していません。 if-thenステートメントを追加する方法はありますか?

私は必要に応じてvbaを使用できますが、可能であればAccess GUIを使用したいと考えています。あなたは、フォーム上の検索フィールドのケース1つ(または両方)で自分自身にそれらを比較するために、それぞれ開始日終了日ためにこれらの基準を使用することができます

+0

レコードを表示するだけであれば、フィルタにVBAコードを使用できます。 SQLを使用する代わりに使用方法を理解するのがずっと簡単です。フィルタプロパティの使用方法については、https://msdn.microsoft.com/en-us/library/office/ff194672.aspxを参照してください。 – SunRay

答えて

0

パラメータが空であればWHERE句(クエリビルダのCriteria)で使用され、パラメータが空の場合はすべてのレコードを表示したい場合は、このパラメータを新しい列として追加し、ORの条件にはIs Nullを指定するか、式Nz([MyParam],"") and in Condition area in OR row add ""です。

WHERE (MyDate >= [paramDateStart] and MyDate <= [paramDateEnd]) 
     OR (Nz([paramDateStart],"")="" AND Nz([paramDateEnd],"") = "") 

時にはシンプルな編集SQL、その後に切り替える:残念ながら、クエリビルダでこの構造では、いくつかのパラメータを持っている場合、SQLで、それははるかに簡単に見えますが、例えば、あなたの場合には、それはこのようなものになります非常に複雑になることがありデザインビュー

0

は空(NULL)である:

>=Nz([Forms]![YourForm]![FromDate], [StartDate]) 

<=Nz([Forms]![YourForm]![ToDate], [EndDate]) 
関連する問題