情况就是这样:
我正在尝试使用基于表单的条件构建查询。特定表单字段可以为空或具有特定值。如果表单字段为空,我需要返回所有记录。如果表单字段不为空,我只需要返回匹配的记录。但是,数据库中的此字段中存在Null值,并且我不希望它们在字段不为空时返回但我确实希望在表单字段为空时返回它们。
我一直在尝试使用“[FormField]或Like [FormField] Is Null”这几乎可以工作但是当表单字段不为空时,我也得到了所有的空记录。
到目前为止,我的许多尝试都导致Null字段记录无法返回,或者“此表达式键入错误或太复杂”错误。
这些结果会得到什么标准?
谢谢
答案 0 :(得分:0)
尝试使用IIF功能:
...WHERE [TableColumn] LIKE IIF([FormField] IS NULL, '*', [FormField])...
答案 1 :(得分:0)
定义一个特殊字段条目,表示“空”,如“ - ”,“_”,“null”,“空”或“x”。空表单字段表示“所有记录”。
另一种方法是有三个单选按钮
(o) All records ( ) Records with empty field xy ( ) Records containing: [ search field here ]
优点是用户不需要学习特殊约定。
然后,您可以相应地定义查询,而不必在一个查询中混合不同的情况
Dim cond As String
Select Case option
Case 1
cond = ""
Case 2
cond = "field IS NULL"
Case 3
cond = "field Like '*" & Me!txtSearch & "*'"
End Select
答案 2 :(得分:0)
怎么样:
SELECT Table1.ID, [AText] & "" AS ATextNotNull
FROM Table1
WHERE [AText] & "" Like [Forms]![Form1]![SomeText]
& IIf([Forms]![Form1]![SomeText] Is Null,"*","")