我有一个新手问题,并希望得到每一个帮助。 我有一个运行查询的表单。该查询基于一个表。 在此表中有几个项目。(项目1,项目2,项目3 ......等)
在表单中有几个复选框,用户可以在其中选择要查询的项目。如果我检查2个项目,他只显示在表格中选择了两个项目的记录。但是我想让它显示所有记录,其中任何一个都显示出来。 防爆。如果我选中Project1的框和Project2的复选框,它应该显示检查项目1的记录以及还检查项目2的记录。
SELECT Vergabeumfang.S63T4, *
FROM Vergabeumfang
WHERE (
((Vergabeumfang.VSS_LAW) Like "*" & [Forms]![Vergabeumfang]![VSS_LAW_Box] & "*"
Or (Vergabeumfang.VSS_LAW) Is Null
)
And ((IIf([Forms]![Vergabeumfang]![S63T4_box]=-1,([Vergabeumfang].[S63T4])=True,([Vergabeumfang].[S63T4])=False
or ((Vergabeumfang.[S63T4])=True )))
)
And ((IIf([Forms]![Vergabeumfang]![S63T2_box]=-1,([Vergabeumfang].[S63T2])=True,([Vergabeumfang].[S63T2])=False
or ((Vergabeumfang.[S63T2])=True )))
)
AND ((Vergabeumfang.V_Commodity_Name) Like "*" & [Forms]![Vergabeumfang]![Commodity_Name_Box] & "*"
Or (Vergabeumfang.V_Commodity_Name) Is Null
)
答案 0 :(得分:2)
以下查询应该适合您,假设我理解正确,最后我会提到一些警告。此外,无需在开头专门选择字段S63T4,因为*将检索它:
SELECT *
FROM Vergabeumfang
WHERE
(
Vergabeumfang.VSS_LAW Like "*" & [Forms]![Vergabeumfang]![VSS_LAW_Box] & "*" Or Vergabeumfang.VSS_LAW Is Null
)
AND
(
Vergabeumfang.V_Commodity_Name Like "*" & [Forms]![Vergabeumfang]![Commodity_Name_Box] & "*" Or Vergabeumfang.V_Commodity_Name Is Null
)
AND
(
(
Vergabeumfang.S63T2 = iif([Forms]![Vergabeumfang]![S63T2_box]=-1, True, -999)
)
OR
(
Vergabeumfang.S63T4 = iif([Forms]![Vergabeumfang]![S63T4_box]=-1, True, -999)
)
)
Access将在粘贴后重新格式化查询,但这些缩进使逻辑更清晰。 -999是一个虚拟值,在Yes / No字段中永远不会为true,以确保在未选中条件复选框时它始终返回false。 我根据给出的信息重建了你的桌子,看起来对吗?为实验而添加到文本字段的无意义数据:
首次打开表单时,它不会显示任何数据,如下所示:
当你勾选S63T4并点击Requery时(你需要某种方式告诉Access requery,因为它不会自动执行 - 按钮是最简单的方法,{{1对于按钮的单击事件,但您也可以将其添加到条件复选框/文本框的AfterUpdate事件中),它将如下所示:
看起来你想进一步过滤部分文本条目,所以这张图片显示了字母" t"与该字段中的空值一起输入:
这是第二个复选框上的pic过滤:
现在,当您同时选中这两个复选框时,我不确定您是否要显示
项目a) S63T2 或 S63T4
或
b)仅 S63T2 和 S63T4
我觉得你希望能够展示任何一种类型的项目,这就是图片所示:
现在,有几个提示:
标准表格现在看起来像这样:
现在添加新项目类型时,您的表单不需要编辑;它会自动出现在列表框中。
无论如何,祝好项目好运!