2017-10-17 147 views
0

我創建一個查詢,並具有以下SQL行的MS Access VBA使用IN操作符

WHERE (((TblBreaksGiven.FinancialYear)='" & sql_FinancialYear & "') 
AND 
((TblBreaksGiven.Quarter) IN (" & sql_Quarters & "))); " 

sql_quarters是基於一個列表框在窗體上,如果我選擇一個或多個季度的查詢工作,但是,如果沒有選擇任何季度,我希望默認爲全部。我不想將sql_quarters設置爲像'Q1,Q2,Q3,Q4'那樣的硬編碼,並且如果列表框中的項目數量是0,就使用它。幾乎就像我可以使用IN I的通配符嘗試了一些基本的IN(*)無濟於事。

+0

更改SQL不包括,如果選擇的計數爲0,使用'如果....然後.... else' –

+0

@Nathan_Sav這是一個選項,但我想要避免這種情況,因爲我將有幾個這樣的列表框參數,並且它將難以持續改變SQl。 – Naz

回答

0

你可以試試這個:

WHERE ((((TblBreaksGiven.FinancialYear)='" & sql_FinancialYear & "') AND 
(((TblBreaksGiven.Quarter) IN (" & sql_Quarters & "))) 
OR (TblBreaksGiven.Quarter) LIKE '*" & sql_Quarters & "*')); " 
+0

在Access SQL中,它不是'*'而不是'%'嗎?如果'FinancialYear'和'Quarter'只出現在查詢中的一個表中,您也可能會丟失除IN'語句中的單個括號外的所有括號,並且也會丟失表名。 'WHERE FinancialYear ='「&sql_FinancialYear&」'AND Quarter IN(「&sql_Quarters&」)OR Quarter LIKE'*「&sql_Quarters&」*'「' –

+0

@ DarrenBartrup-Cook我也這麼認爲。 – Naz

+0

我已經更新了查詢OR條件只與Quarter一起嵌套,如果'sql_Quarters'返回空字符串,它應該可以正常工作,查詢應該實際檢查@Naz - 請檢查一下嗎? –