我正在设计一个搜索表单,根据 4 个文本字段(名字、姓氏、电话号码和促销代码)搜索我的访问数据库。
查询看起来像:
Like "*" & [Forms]![SearchF]![txtFirstName] & "*"
Like "*" & [Forms]![SearchF]![txtSurnameName] & "*"
Like "*" & [Forms]![SearchF]![txtPhone] & "*"
Like "*" & [Forms]![SearchF]![txtPromo] & "*"
如果所有字段都为空,则搜索应返回所有记录。当您在文本框中输入某些值时,结果会缩小到匹配范围。
它几乎工作得很好,但是当某些领域没有价值时就会出现问题。例如,如果某人没有促销代码,那么即使您将其留空,他们的记录也将始终被跳过。我假设访问查询不喜欢空白字段。
解决这个问题最简单的方法是什么?
我认为这里的文本框可能有点分散注意力,因为这个问题更基本。考虑这个查询...
SELECT f.id, f.some_text
FROM tblFoo AS f
WHERE f.some_text Like "*";
它返回行,其中some_text
包含any非 Null 值,甚至是空字符串。但是它不会返回行some_text
一片空白。
原因是 Null 在 aLike
比较永远不会评估为 True。从“立即”窗口考虑这个示例...
? "foo" Like "*"
True
? Null Like "*"
Null
为您Like
比较,我认为您需要目标字段包含文本框文本的行。但当文本框为空时返回所有行。您可以通过将这两个条件与OR
.
WHERE
[Promo Code] Like "*" & Forms!SearchF!txtPromo & "*"
OR
Forms!SearchF!txtPromo Is Null
当文本框为空时,第二部分OR
对于所有行都为 true,因此返回所有行。
当文本框不为 Null 时,仅显示满足条件的行Like
比较结果被返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)