2017-01-03 82 views
1

我想在SQL訪問查詢中應用複選框過濾器。這是一個基於表單字段的多重篩選器查詢,基於文本字段的篩選器很好,你可以在下面的代碼中看到,但我無法弄清楚如何使複選框過濾器工作,我嘗試了很多示例在線但他們都沒有工作。有一個問題我試過的一件事是:AND(LEN([Formulários] [frmFC] [cbxPago] &')= 0或帕就像 '' & '> 0' & ''!)複選框過濾器其他過濾器

更好代碼爲我目前正在使用的是歡迎;)

PARAMETERS [Formulários]![frmFC]![txtCriadoEm] Text (255); 

SELECT tabFcGas.criadoEm, tabFcGas.Cliente, tabFcGas.valor, 
     tabFcGas.vencimento, tabFcGas.parcela, tabFcGas.totalParcelas, 
     tabFcGas.pago, tabFcGas.classificacao, tabFcGas.obs, tabFcGas.nf 
FROM tabFcGas 
WHERE (Len([Formulários]![frmFC]![txtCriadoEm] & '') = 0 
     OR criadoEm Like '*' & [Formulários]![frmFC]![txtCriadoEm] & '*') 
    AND (Len([Formulários]![frmFC]![cmbCliente] & '') = 0 
     OR Cliente Like '*' & [Formulários]![frmFC]![cmbCliente] & '*') 
    AND (vencimento BETWEEN NZ([Formulários]![frmFC]![txtDataIni],#01/01/2001#) 
     AND NZ([Formulários]![frmFC]![txtDataFin],#01/01/2050#)) 
    AND (Len([Formulários]![frmFC]![cmbInvestimento] & '') = 0 
     OR classificacao Like '*' & [Formulários]![frmFC]![cmbInvestimento] & '*') 
    AND (Len([Formulários]![frmFC]![txtVencimento] & '') = 0 
     OR Vencimento Like '*' & [Formulários]![frmFC]![txtVencimento] & '*') 

回答

0

複選框是1(選中)或0(未選中)。您也可以使用True作爲選中項,False作爲未選中項。

您應該創建一個單獨的測試查詢,以確保您的SQL是正確的,並且在此查詢中僅測試複選框。如果它有效,那麼你的語法沒問題,你可以將它添加到更長,更復雜的查詢中。

+0

感謝您的幫助!我解決了按部件工作的問題,功能代碼是:WHERE(iif(forms!frmFC!cmbPago =「Pago」,Pago BETWEEN#01/01/2001#和#01/01/2050#,iif(forms!frmFC !cmbPago =「Aberto」,Pago IS NULL,Pago IS NULL或「」))) – CEIEC

+0

如果我的回答很有幫助,請點擊左側的複選標記,以便獲得積分。謝謝! –