【发布时间】:2017-07-19 20:45:35
【问题描述】:
我有一个表单,它有一个名为 [Supp] 的组合框,它从名为 [Supplier] 的表列中提取。
同时,我正在过滤与日期范围为 [Text6](Starting Date) 和 [Text7](Ending Date) 的记录关联的日期
我正在尝试使供应商过滤器成为可选,只要您将 [Supp] 留空/空,它就会选择所有供应商。
问题是,每当我将 [Supp] 留空时,它似乎超出了日期范围过滤器并选择所有可用记录,而不管日期如何。我认为这很可能是因为我使用的是“OR”。
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;
总而言之 - 我正在尝试按日期范围和供应商进行过滤的查询。但如果供应商标准为空白,我希望它不过滤供应商。如果不破坏日期范围过滤器,我将无法执行此操作。
任何帮助将不胜感激。谢谢。
成品,感谢 Andre 的解决方案:
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;
【问题讨论】: