Sql 如果参数为空,如何使查询条件选择所有内容

Sql 如果参数为空,如何使查询条件选择所有内容,sql,ms-access,Sql,Ms Access,我有一个表单,它有一个名为[Supp]的组合框,它从名为[Supplier]的表列中提取 同时,我正在筛选与日期范围为[Text6](开始日期)和[Text7](结束日期)的记录关联的日期 我试图使供应商过滤器成为可选的,只要您将[Supp]留空/空,它就会选择所有供应商 问题是,每当我将[Supp]留空时,它似乎超过了日期范围过滤器,并选择所有可用记录,而不考虑日期。我想这很可能是因为我用了“或” 选择[Table Material Label]。序列[Table Material Labe

我有一个表单,它有一个名为[Supp]的组合框,它从名为[Supplier]的表列中提取

同时,我正在筛选与日期范围为[Text6](开始日期)和[Text7](结束日期)的记录关联的日期

我试图使供应商过滤器成为可选的,只要您将[Supp]留空/空,它就会选择所有供应商

问题是,每当我将[Supp]留空时,它似乎超过了日期范围过滤器,并选择所有可用记录,而不考虑日期。我想这很可能是因为我用了“或”

选择[Table Material Label]。序列[Table Material Label]。[Date Received],[Table Material Label]。材料说明[Table Material Label]。材料代码[Table Material Label]。供应商,
[表料标签].[批号],[表料标签].重量[表料标签].数量[表料标签].[采购订单号],[表料标签].[收货人],[表料标签].[签入人],[表料标签].[总重量]
从[表格材料标签]
其中((([表格材料标签][收到日期])>=[表格]![报表生成器]![Text6]
和([表格材料标签][收到日期])请看这里:


如果供应商标准为空,则此项和部分将始终为真。

感谢10亿安德烈,他工作得非常出色。令人惊讶的是,组织代码能帮助您发现错误。
SELECT [Table Material Label].Serial, [Table Material Label].[Date Recieved], [Table Material Label].MaterialDescription, [Table Material Label].MaterialCode, [Table Material Label].Supplier, 

[Table Material Label].[Lot Number], [Table Material Label].Weight, [Table Material Label].Quantity, [Table Material Label].[Purchase Order Number], [Table Material Label].[Received By], [Table Material Label].[Checked in By], [Table Material Label].[Total Weight]

FROM [Table Material Label]

WHERE ((([Table Material Label].[Date Recieved])>=[Forms]![Report Generator]![Text6] 
    And ([Table Material Label].[Date Recieved])<=[Forms]![Report Generator]![Text7]) 
    AND (([Table Material Label].Supplier)=IIf([forms]![Report Generator]![Supp].[Value]="*",([Table Material Label].[Supplier])='*',([Table Material Label].[Supplier])=[Forms]![Report Generator]![Supp].[Value])))


ORDER BY [Table Material Label].[Date Recieved], [Table Material Label].MaterialDescription, [Table Material Label].MaterialCode, [Table Material Label].Supplier;
SELECT [Table Material Label].Serial, [Table Material Label].[Date Recieved], [Table Material Label].MaterialDescription, [Table Material Label].MaterialCode, [Table Material Label].Supplier, 

[Table Material Label].[Lot Number], [Table Material Label].Weight, [Table Material Label].Quantity, [Table Material Label].[Purchase Order Number], [Table Material Label].[Received By], [Table Material Label].[Checked in By], [Table Material Label].[Total Weight]

FROM [Table Material Label]

WHERE  (([Table Material Label].[Date Recieved])>=[Forms]![Report Generator]![Text6] 
    And ([Table Material Label].[Date Recieved])<=[Forms]![Report Generator]![Text7]) 
    AND ([Table Material Label].Supplier = [Forms]![Report Generator]![Supp] 
    OR [Forms]![Report Generator]![Supp] IS NULL)

ORDER BY [Table Material Label].[Date Recieved], [Table Material Label].MaterialDescription, [Table Material Label].MaterialCode, [Table Material Label].Supplier;
AND ([Table Material Label].Supplier = [Forms]![Report Generator]![Supp] 
     OR [Forms]![Report Generator]![Supp] IS NULL)