Function MSAccess:可以为WHERE子句提供函数吗?

Function MSAccess:可以为WHERE子句提供函数吗?,function,ms-access,Function,Ms Access,我试图在Access中运行查询,但使用where子句的函数名。这样行吗? 我的查询仍然返回所有字段,即使函数被调用,并且返回有效的搜索条件。它似乎没有得到应用 SELECT Field1, Field2 FROM MyTable WHERE GetWhereClause("xx", "yy"); 函数getWhere子句将返回如下内容: Field1 = 'xx' AND Field3 = 'sample' 不,不幸的是,您不能,因为布尔值在SQL中不被视为第一类值。您可以定义一个函数,该函

我试图在Access中运行查询,但使用where子句的函数名。这样行吗? 我的查询仍然返回所有字段,即使函数被调用,并且返回有效的搜索条件。它似乎没有得到应用

SELECT Field1, Field2
FROM MyTable
WHERE GetWhereClause("xx", "yy");
函数getWhere子句将返回如下内容:

Field1 = 'xx' AND Field3 = 'sample'

不,不幸的是,您不能,因为布尔值在SQL中不被视为第一类值。您可以定义一个函数,该函数返回1表示真,0表示假,然后执行以下操作:

SELECT Field1, Field2
FROM MyTable
WHERE GetWhereClauseResult("xx", "yy") = 1;

不,不幸的是,您不能,因为布尔值在SQL中不被视为第一类值。您可以定义一个函数,该函数返回1表示真,0表示假,然后执行以下操作:

SELECT Field1, Field2
FROM MyTable
WHERE GetWhereClauseResult("xx", "yy") = 1;

如果函数返回部分SQL字符串,则可以执行此操作。但只有在VBA中构造查询时:

strSQL = "SELECT Field1, Field2
FROM MyTable
WHERE " & GetWhereClause('xx', 'yy') & ";"

如果函数返回部分SQL字符串,则可以执行此操作。但只有在VBA中构造查询时:

strSQL = "SELECT Field1, Field2
FROM MyTable
WHERE " & GetWhereClause('xx', 'yy') & ";"

谢谢,我不确定我是否100%理解您提出的解决方案。如果我的函数返回1或0,那么如何检索/应用where子句?假设函数GetWhereClauseResult返回0,我的过滤器(Field1='xx')将如何成为查询的一部分?@user1208908 Mick的解决方案非常优雅。您的
getwhere子句
函数所要做的就是在满足其条件的情况下返回
1
。然后,主SQL查询的实际
where
子句检查函数是否返回
1
。如果是,则保留该行。如果没有,则删除该行。谢谢,我不确定我是否100%理解您提出的解决方案。如果我的函数返回1或0,那么如何检索/应用where子句?假设函数GetWhereClauseResult返回0,我的过滤器(Field1='xx')将如何成为查询的一部分?@user1208908 Mick的解决方案非常优雅。您的
getwhere子句
函数所要做的就是在满足其条件的情况下返回
1
。然后,主SQL查询的实际
where
子句检查函数是否返回
1
。如果是,则保留该行。如果否,则删除该行。VBA实际上是我试图避免的部分,但似乎这就是解决方案。我会这样做的。VBA实际上是我试图避免的部分,但似乎这就是解决方案。我会像那样做的。