我正在尝试运行搜索查询。它如下。最后两行代码不起作用。这是一个复选框。如果选中checkboxYes,则仅拉取已检查数据库的YES / NO字段中的项目。如果选中了checkboxNo,则仅拉取已检查的数据库的YEs / No字段中的项目。如果选中了BOTH框,则拉出所有项目。我无法让任何一种情况发挥作用。除复选框之外的所有其他字段均可正常工作。
SELECT *
FROM NLog
Where
(([Forms]![FrmSearch]![Combo13] is Null) OR ((NLog.State)=[Forms]![FrmSearch]![Combo13])) and
(([Forms]![FrmSearch]![daterecsrt] is Null) or (((NLog.DateRec) Between [Forms]![FrmSearch]![daterecsrt] And [Forms]![FrmSearch]![daterecend]))) and
(([Forms]![FrmSearch]![datesrttxt3] is Null) or (((NLog.DateRec) Between [Forms]![FrmSearch]![datesrttxt3] And [Forms]![FrmSearch]![dateendtxt3]))) and
(([Forms]![FrmSearch]![checkyes] is Null) or ((NLog.Compchk)=True)) and
(([Forms]![FrmSearch]![checkNo] is Null) or ((NLog.Compchk)=False))
谢谢!
我正在使用MS Acess 2010.这是使用表单上的框来运行查询。
答案 0 :(得分:0)
NLog
是一个表,那么为什么要将表中的字段引用为[Forms]![FrmSearch]![Combo13]
等等。这些是表单上的控件而不是表中的字段。你的查询真的不应该是:
SELECT * FROM NLog WHERE
(NLog.State is Null OR NLog.State = Forms!FrmSearch!Combo13)
AND (NLog.DateRec is Null OR NLog.DateRec Between Forms!FrmSearch!daterecsrt And Forms!FrmSearch!daterecend
AND (NLog.DateRec is Null OR NLog.DateRec Between Forms!FrmSearch!datesrttxt3 And Forms!FrmSearch!dateendtxt3)
AND (NLog.Compchk is Null OR NLog.Compchk = True)
AND (NLog.Compchk is Null OR NLog.Compchk = False)
此外,以下内容不会给您任何结果:
AND (NLog.Compchk is Null OR NLog.Compchk = True)
AND (NLog.Compchk is Null OR NLog.Compchk = False)
NLog.Compchk
不能同时为True
和False
。它将是一个或另一个或Null
。
您需要检查框是否已选中并围绕该框构建查询的最后一部分(即IIF()
)。