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

前端之家收集整理的这篇文章主要介绍了sql – MS Access:如果为空,则忽略查询条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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 ...

猜你在找的MsSQL相关文章