基于条件的SQL查询

时间:2010-08-06 06:55:35

标签: sql

如果用户输入了所有场地,它就能正常工作。我需要一个结合所有sql命令的代码。用户可以输入一个字段或两个字段或所有三个字段。我需要使用一个字段查询或两个字段查询或三个字段查询来搜索数据库。

我试过它的帮助是一张桌子&搜索测试是形式&合同号,用户名和&数据库和表格中的日期。

其中help(table).cont_no(field)等于或不等于search-test(表单名称).cont_no(文本框字段)

SELECT * 
FROM   help 
WHERE  ( forms ! [search-test] ! cont_no = '' 
          OR help.cont_no = forms ! [search-test] ! cont_no ) 
       AND ( forms ! [search-test] ! username = '' 
              OR help.username = forms ! [search-test] ! username ) 
       AND ( forms ! [search-test] ! cbo_date = '' 
              OR help.DATE = forms ! [search-test] ! cbo_date );

1 个答案:

答案 0 :(得分:0)

我认为您的意思是,如果记录字段包含与所提供参数的匹配,则您希望结果集中包含记录。如果未提供特定参数,则应始终将相应字段视为正匹配。

也就是说,如果没有提供参数,则应返回整个表。

至于解决方案,只是一个猜测(我不是MS Access专家,这是MS Access的吗?),但你可以使用iif函数强制匹配吗?同样,我不确定语法,但底层逻辑应该有效。

将WHERE子句更改为

WHERE

(IIF(forms![search-test]!username is not null, forms![search-test]!username, help.cont_no) = help.cont_no

AND

(IIF(forms![search-test]!cont_no is not null, forms![search-test]!cont_no, help.username) = help.username

AND

(IIF(forms![search-test]!cbo_date is not null, forms![search-test]!cbo_date, help.dbo_date) = help.dbo_date