【发布时间】:2018-02-16 23:37:45
【问题描述】:
我已经全力以赴,我很确定这是我没有看到的简单的东西。
我有一个我正在设置用于测试的 MS-Access 数据库。现在,它非常简单,只有 2 个表、3 个查询和 2 个表单。
到目前为止,我遇到的问题是我正在尝试使用复选框(而不是单选按钮)来驱动查询。每个复选框应在选中时过滤掉该字段中不具有空值或空值的任何项目。我附上了一张表格的屏幕截图,显示了下面的 5 个复选框。
目前,只要我不选择多个复选框,查询就可以正常工作(所以不正确,真的)。在图像中,您可以看到它在选中相应框时显示带有空字段的记录(这不是我想要的)。理想情况下,它应该在检查所有内容后仅在屏幕截图中显示 Jamey Smith 的记录。
然后,例如,选择 CCS 和 MICCS,它只会显示 Ben Ward 记录。
这是 SQL 代码:
SELECT
EmployeeInfo.[Last Name],
EmployeeInfo.[First Name],
EmployeeInfo.TWICS,
EmployeeInfo.CCS,
EmployeeInfo.MICCS,
EmployeeInfo.OSHA10,
EmployeeInfo.OSHA30
FROM
EmployeeInfo
WHERE (((EmployeeInfo.TWICS) Is Not Null))
AND (([Forms]![TestForm2]![optTWICS])=True)
OR (((EmployeeInfo.CCS) Is Not Null)
AND (([Forms]![TestForm2]![optCCS])=True)
OR ((EmployeeInfo.MICCS) Is Not Null)
AND (([Forms]![TestForm2]![optMICCS])=True)
OR ((EmployeeInfo.OSHA10) Is Not Null)
AND (([Forms]![TestForm2]![optOSHA10])=True)
OR ((EmployeeInfo.OSHA30) Is Not Null)
AND (([Forms]![TestForm2]![optOSHA30])=True));
我确信我的布尔逻辑被搞砸了。我尝试了几种方法,将 OR 更改为 AND,以及将 AND 嵌入 IIF 语句中(然后将 OR 更改为 ANDS)。嵌入的 IIF 语句的工作原理是,如果每个框都被选中并且记录的所有字段都不为空,它们只会显示一条记录。
我真的很感激这里的指针。我整个晚上都在苦苦挣扎,我知道我会在我的大脑中某个地方度过我的周末。我也在 VBA 中尝试过,但它更麻烦并且有同样的问题。
【问题讨论】:
标签: sql ms-access ms-access-2016