2017-01-03 78 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

如果我的回答很有帮助,请点击左侧的复选标记,以便获得积分。谢谢! –