使用MS Access 2016
非常困在查询错误上。它只使用"里程碑"标准或" HierarchyLevel"标准 - 取决于最后更新的控件。状态标准适用于所有情况。
任何人都可以看到我的错误吗?查询应满足以下条件:选择状态,里程碑名称搜索字符串,所选级别或空级别(即所有级别)
谢天谢地
SELECT
qry_Milestones_WithHierarchy.ID,
qry_Milestones_WithHierarchy.HierarchyLevel,
qry_Milestones_WithHierarchy.Milestone
FROM qry_Milestones_WithHierarchy
WHERE
( qry_Milestones_WithHierarchy.Milestone Like "*" & [Forms]![frm_SelectMilestone]![txt_SearchTerm].[Text] & "*" )
AND ( qry_Milestones_WithHierarchy.IDStatus = [Forms]![frm_SelectMilestone]![cbo_Status] )
AND
(
qry_Milestones_WithHierarchy.HierarchyLevel = [Forms]![frm_SelectMilestone]![cbo_HierarchyLevel]
OR
Len( [Forms]![frm_SelectMilestone]![cbo_HierarchyLevel].[Text] & "" ) = 0
)
;
更新
日期示例
HierarchyLevel Milestone
4 NameTest1
4 NameDemo1
3 NameTest2
3 NameDemo2
当我只使用里程碑或水平过滤器时,我得到了正确的结果
Controls
TextBox(Milestone) = ""
CombboBox(Status) = 1
CombboBox(HierarchyLevel) = 4
Results
HierarchyLevel Milestone
4 NameTest1
4 NameDemo1
第3级记录错误地包含在结果中
Controls
TextBox(Milestone) = "Test"
CombboBox(Status) = 1
CombboBox(HierarchyLevel) = 4
Results
HierarchyLevel Milestone
4 NameTest1
3 NameTest2
答案 0 :(得分:0)
尝试使用IIf切换最后一个语句。请注意,在搜索开始时使用通配符会使字段上的索引变得多余,因此大数据集会使这种情况变得非常慢。
SELECT
qry_Milestones_WithHierarchy.ID,
qry_Milestones_WithHierarchy.HierarchyLevel,
qry_Milestones_WithHierarchy.Milestone
FROM qry_Milestones_WithHierarchy
WHERE ( qry_Milestones_WithHierarchy.Milestone Like "*" & [Forms]![frm_SelectMilestone]![txt_SearchTerm] & "*" )
AND ( qry_Milestones_WithHierarchy.IDStatus = [Forms]![frm_SelectMilestone]![cbo_Status] )
AND ( qry_Milestones_WithHierarchy.HierarchyLevel " & IIF ([Forms]![frm_SelectMilestone]![cbo_HierarchyLevel] is null ,"Like *", " = " & [Forms]![frm_SelectMilestone]![cbo_HierarchyLevel] ) & ") ;