2016-03-28 92 views
0

我有一個查詢過濾記錄基於日期(開始日期和結束日期)選擇在以前的形式。我希望查詢過濾特定的日期範圍,或者如果字段留空,則輸出所有記錄。查詢過濾特定數據或沒有過濾器如果空白

我不熟悉SQL。有沒有辦法添加if-then語句?

如果需要,我可以使用vba,但如果可能的話,想使用Access GUI。

+0

如果您只是需要查看您的記錄,則可以使用VBA代碼進行過濾。理解如何使用而不是使用SQL更容易。您可以查看https://msdn.microsoft.com/en-us/library/office/ff194672.aspx關於如何使用過濾器屬性 – SunRay

回答

0

如果您有一個參數,用於WHERE子句(查詢生成器中的條件),並且您希望顯示所有記錄(如果參數爲空),則只需將此參數添加爲新列,並在此條件下指示Is Null或者,最好添加一個表達式爲Nz([MyParam],"") and in Condition area in OR row add「」。不幸的是在查詢生成器這種結構可能是,如果你有幾個參數,在SQL它看起來要簡單得多,例如在你的情況下,它會是這樣相當複雜:

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

有時簡單編輯SQL,然後切換到設計視圖

0

您可以使用這些標準起始日期結束日期分別以他們在表格上,搜索字段的情況下,一個(或兩個)比較,以自己爲空(NULL):

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

<=Nz([Forms]![YourForm]![ToDate], [EndDate])