SQL查询:使用复选框排除空字段记录

时间:2018-02-16 23:37:46

标签: sql ms-access ms-access-2016

我已经把这一个给了我所有人,而且我非常确定这是我看不到的简单。

我有一个MS-Access数据库,我正在设置进行测试。现在,它非常简单,只有2个表,3个查询和2个表单。

到目前为止我遇到的问题是,我正在尝试使用复选框(而不是单选按钮)来驱动查询。选中后,每个复选框都应过滤掉该字段中没有空值或空值的任何项目。我已经在表格的屏幕截图中显示了下面的5个复选框。

screenshot

目前,只要我没有选中多个复选框(因此不是正确的,真的),查询就能正常工作。在图像中,您可以看到当选中相应的框时,它显示的是带有空字段的记录(这不是我想要的)。理想情况下,应该检查所有内容,只在屏幕截图中显示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,以及在IIF语句中嵌入AND(然后将OR更改为ANDS)。嵌入式IIF语​​句的工作原理是,只有选中每个框并且记录的所有字段都不为空,它们才会显示记录。

我真的很感激这里的指针。整个晚上我一直在这里度过难关,我知道我会在周末坐在我的大脑中。我也在VBA中试过这个,但它更麻烦并且有同样的问题。

1 个答案:

答案 0 :(得分:0)

我不确定复选框值的Access语法,但我确实在我修复的查询中看到了一些逻辑错误。这可能是你想要做的。

df.xts <- xts(cbind(d$a, d$b), order.by = d$t)