搜索标准表

时间:2011-06-22 12:05:39

标签: sql ms-access vba

所以我设法让我的标准形成并进入访问状态,它搜索名称/城市,但它只搜索确切的城市名称,即使我给它一个通配符,名称字段也可以作为搜索该领域的任何部分?谁知道为什么?这是我的代码:

 'Text field example. Use quotes around the value in the string.
    If Not IsNull(Me.txtFilterCity) Then
        strWhere = strWhere & "([City] Like ""*" & Me.txtFilterCity & "*"") AND "
    End If

    'Another text field example. Use Like to find anywhere in the field.
    If Not IsNull(Me.txtFilterMainName) Then
        strWhere = strWhere & "([MainName] Like ""*" & Me.txtFilterMainName & "*"") AND "
    End If

谢谢!

2 个答案:

答案 0 :(得分:3)

这是建立strWhere的另一种方法。

' Text field example. Use quotes around the value in the string. '
If Not IsNull(Me.txtFilterCity) Then
    strWhere = strWhere & " AND City Like ""*" & Me.txtFilterCity & "*"""
End If
' Another text field example. Use Like to find anywhere in the field. '
If Not IsNull(Me.txtFilterMainName) Then
    strWhere = strWhere & " AND MainName Like ""*" & Me.txtFilterMainName & "*"""
End If
' chop off leading AND '
strWhere = Mid(strWhere, 6)
Debug.Print strWhere

我放弃了括号和方括号,因为这里不需要它们。如果字段名称包含空格,标点字符等,则需要围绕字段名称的方括号。如果字段名称是保留字,则方括号也很有用。我更喜欢只使用不需要在对象名称中包围的字符,并且avoid reserved words作为对象名称。

答案 1 :(得分:-1)

如果您正在使用访问

*允许您匹配任何长度的任何字符串(包括零长度)

?允许您匹配单个字符

#允许您匹配单个数字

例如:

与'b *'类似,将返回以b

开头的所有值

与'* b *'类似,将返回包含b

的所有值

与'* b'类似,将返回以b

结尾的所有值

喜欢'b?'将返回以b开头并且长度为2个字符的所有值

与'b#'类似,将返回以b开头的所有值,长度为2个字符,其中第二个字符为数字