Excel 限制Where子句中AND语句的数量?

Excel 限制Where子句中AND语句的数量?,excel,ms-access,vba,Excel,Ms Access,Vba,我在Excel中的userform上有4个文本框。每个文本框对应Access中表中的一个字段。我想搜索符合每个文本框中指定条件的记录。我使用和构造了一个SQL语句,其中包括三个文本框。但是,当我添加第四个文本框时,会收到一条错误消息。我可以包含的数量和声明是否有限制?如何解决此问题 提前感谢您的帮助 SQLwhere = "WHERE " If Len(var & vbNullString) <> 0 Then If CheckBox1 = True Then

我在Excel中的userform上有4个文本框。每个文本框对应Access中表中的一个字段。我想搜索符合每个文本框中指定条件的记录。我使用和构造了一个SQL语句,其中包括三个文本框。但是,当我添加第四个文本框时,会收到一条错误消息。我可以包含的数量和声明是否有限制?如何解决此问题

提前感谢您的帮助

SQLwhere = "WHERE "
If Len(var & vbNullString) <> 0 Then
    If CheckBox1 = True Then
    SQLwhere = SQLwhere & "[Table1].[RunDate] = '" & var & "' AND "
    Else
    SQLwhere = SQLwhere & "[Table1].[RunDate] LIKE '" & var & "%" & "' AND "
    End If
End If
If Len(var2 & vbNullString) <> 0 Then
    If CheckBox1 = True Then
    SQLwhere = SQLwhere & "[Table1].[SampleID] = '" & var & "' AND "
    Else
    SQLwhere = SQLwhere & "[Table1].[SampleID] LIKE '" & var2 & "%" & "' AND "
    End If
End If
If Len(var3 & vbNullString) <> 0 Then
    If CheckBox1 = True Then
    SQLwhere = SQLwhere & "[Table1].[Tube] = '" & var3 & "' AND "
    Else
    SQLwhere = SQLwhere & "[Table1].[Tube] LIKE '" & var3 & "%" & "' AND "
    End If
End If
If Len(var4 & vbNullString) <> 0 Then
    If CheckBox1 = True Then
    SQLwhere = SQLwhere & "[Table1].[Test] = '" & var4 & "' AND "
    Else
    SQLwhere = SQLwhere & "[Table1].[Test] LIKE '" & var4 & "%" & "' AND "
    End If
End If


StrSql = "SELECT * FROM [Table1] "

 'Remove the last AND applicable

If SQLwhere = "WHERE " Then
    SQLwhere = ""
Else
    SQLwhere = Left(SQLwhere, Len(SQLwhere) - 6)
End If

StrSql = StrSql & SQLwhere
SQLwhere=“WHERE”
如果Len(var&vbNullString)为0,则
如果CheckBox1=True,则
SQLwhere=SQLwhere&“[Table1].[RunDate]='”&var&“AND”
其他的
SQLwhere=SQLwhere&“[Table1].[RunDate]类似于“&var&“%”和“&var&%”
如果结束
如果结束
如果Len(var2&vbNullString)为0,则
如果CheckBox1=True,则
SQLwhere=SQLwhere&“[Table1].[SampleID]='”&var&“AND”
其他的
SQLwhere=SQLwhere&“[Table1].[SampleID]类似于”&var2&“%”&“和”
如果结束
如果结束
如果Len(var3&vbNullString)为0,则
如果CheckBox1=True,则
SQLwhere=SQLwhere&“[Table1].[Tube]=”&var3&“AND”
其他的
SQLwhere=SQLwhere&“[Table1].[Tube]LIKE'&var3&“%”和“
如果结束
如果结束
如果Len(var4&vbNullString)为0,则
如果CheckBox1=True,则
SQLwhere=SQLwhere&“[Table1]。[Test]=”&var4&“AND”
其他的
SQLwhere=SQLwhere&“[Table1].[Test]类似于”&var4&“%”和“
如果结束
如果结束
StrSql=“从[表1]中选择*
'删除最后一个和适用的
如果SQLwhere=“WHERE”,则
SQLwhere=“”
其他的
SQLwhere=Left(SQLwhere,Len(SQLwhere)-6)
如果结束
StrSql=StrSql&SQLwhere

一条错误消息将非常有用

我看到您正在从SQLwhere中减去
6
,这将消除最后一个撇号“封装”;尝试将其更改为
-5


此外,如果在任何文本框中有一个值包含撇号
,则SQL将无法运行。

有一个限制,一些google结果称其有40个条件。@BGeorge OP声明用户表单在Excel中,并连接到Access。这段代码在Excel中,标记是正确的,您的编辑应该被删除。错误是什么?在哪一条线上?在您尝试运行它之前,
StrSql
的值是多少?我收到一条错误消息。如果您也与我们分享该错误消息,那将非常有帮助。你面前已经有了非常相关的信息——你为什么不也提供给我们呢?