加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – MS Access:如果为空,则忽略查询条件

发布时间:2020-12-12 06:22:58 所属栏目:MsSql教程 来源:网络整理
导读:我在Access中有一个表单,我在其中运行基于几个文本框的查询.我对从文本框中提取的几个查询字段应用条件,但希望查询在文本框为空时忽略条件. 例如,如果Machine_TextBox为空,则不要将条件应用于Events.Machine字段. SQL代码是: SELECT Events.Machine,Events.[
我在Access中有一个表单,我在其中运行基于几个文本框的查询.我对从文本框中提取的几个查询字段应用条件,但希望查询在文本框为空时忽略条件.

例如,如果Machine_TextBox为空,则不要将条件应用于Events.Machine字段.

SQL代码是:

SELECT Events.Machine,Events.[Event Date],Events.[Event Description],Events.[Action Taken],Events.[Machine Clinical],Events.[Modalities Not Clinical],Events.[Manufacturer Ticket #],Events.[TLC Ticket #],Events.FSR,Events.ID,Events.[Event Recorded By],Events.[Action Recorded By],Events.[Downtime Validation],Events.[Event Time]  

FROM Events

WHERE (((Events.Machine)=IIf([Forms]![SearchEvent]![Machine_TextBox] Is Null,"",[Forms]![SearchEvent]![Machine_TextBox]))  AND ((Events.[Event Date]) Between 
Nz([Forms]![SearchEvent]![StartDate_TextBox],#1/1/1900#) And Nz([Forms]![SearchEvent]![EndDate_TextBox],#1/1/2100#))  
AND ((Events.[Event Description]) Like "*" & [Forms]![SearchEvent]![EventDetails_TextBox])  
AND ((Events.[Manufacturer Ticket #])=[Forms]![SearchEvent]![Manufacturer_TextBox])  
AND ((Events.[TLC Ticket #])=[Forms]![SearchEvent]![TLC_TextBox]) 
AND ((Events.FSR)=[Forms]![SearchEvent]![FSR_TextBox]))  
OR (((Events.Machine)=IIf([Forms]![SearchEvent]![Machine_TextBox] Is Null,[Forms]![SearchEvent]![Machine_TextBox]))  
AND ((Events.[Event Date]) Between Nz([Forms]![SearchEvent]![StartDate_TextBox],#1/1/1900#) 
AND Nz([Forms]![SearchEvent]![EndDate_TextBox],#1/1/2100#))  
AND ((Events.[Action Taken]) Like "*" & [Forms]![SearchEvent]![EventDetails_TextBox])  
AND ((Events.[Manufacturer Ticket #])=[Forms]![SearchEvent]![Manufacturer_TextBox]) 
AND ((Events.[TLC Ticket #])=[Forms]![SearchEvent]![TLC_TextBox])  
AND ((Events.FSR)=[Forms]![SearchEvent]![FSR_TextBox]))

ORDER BY Events.[Date and Time Stamp] DESC;

此致,

标记

解决方法

您可以尝试 here所描述的技术.

对于每个搜索框,使用布尔逻辑来过滤其值,或者通过使AND子句为TRUE来忽略此AND子句(如果它为空).

我只会使用两个搜索框作为示例:

SELECT stuff
FROM Events

WHERE ((Events.Machine = [Forms]![SearchEvent]![Machine_TextBox]) 
            OR ([Forms]![SearchEvent]![Machine_TextBox] Is Null))
  AND ((Events.[Event Description] Like "*" & [Forms]![SearchEvent]![EventDetails_TextBox] & "*") 
            OR ([Forms]![SearchEvent]![EventDetails_TextBox] Is Null))
  AND ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读