Ms access SQL访问-从何处开始组合框

Ms access SQL访问-从何处开始组合框,ms-access,combobox,Ms Access,Combobox,Access中有一个组合框,其中包含一些值。选择要筛选记录的其中一个值 现在,我编写的查询如下所示: SELECT Fornitori.Brand ,Fornitori.Mail ,Fornitori.Web ,Fornitori.Località ,Fornitori.[ID Categoria] ,Fornitori.[ID Zona] ,Zona.Zona ,Settore.Categoria FROM Settore INNER J

Access中有一个组合框,其中包含一些值。选择要筛选记录的其中一个值

现在,我编写的查询如下所示:

SELECT Fornitori.Brand
    ,Fornitori.Mail
    ,Fornitori.Web
    ,Fornitori.Località
    ,Fornitori.[ID Categoria]
    ,Fornitori.[ID Zona]
    ,Zona.Zona
    ,Settore.Categoria
FROM Settore
INNER JOIN (
    Zona INNER JOIN Fornitori ON Zona.[ID Zona] = Fornitori.[ID Zona]
    ) ON Settore.[ID Categoria] = Fornitori.[ID Categoria]
WHERE Fornitori.[ID Categoria] = Maschere!Brandsrch!Brandcatsrchcb.Value;
这样做,当我从组合框中选择一个值时,它会过滤记录


我现在的目标是在取消组合框中的文本时,或者在我选择某个内容之前,当文本为空时,不使用任何筛选器,例如没有WHERE子句。

您可以使用VBA执行一些复杂的操作,或者只需将查询修改为以下内容:

SELECT Fornitori.Brand, Fornitori.Mail, Fornitori.Web, Fornitori.Località, Fornitori.[ID Categoria], Fornitori.[ID Zona], Zona.Zona, Settore.Categoria
FROM Settore INNER JOIN (Zona INNER JOIN Fornitori ON Zona.[ID Zona] = Fornitori.[ID Zona]) ON Settore.[ID Categoria] = Fornitori.[ID Categoria]

WHERE Fornitori.[ID Categoria]=Maschere!Brandsrch!Brandcatsrchcb.Value
OR NZ(Maschere!Brandsrch!Brandcatsrchcb.Value, "") = "";

当Maschere!布兰德!Brandcatsrchcb.Value未设置。

它可以工作。你能简单解释一下NZ在逻辑上的作用吗?它将空值转换为空字符串,所以我不需要同时测试空值和可能冗余的空字符串,但不知道该值是如何设置的,这不会有什么影响。