以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Like 运算符中出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120299)

--  作者:蓝蚂蚁
--  发布时间:2018/6/12 11:23:00
--  Like 运算符中出错
第一列为字符类型,按钮代码为:
Dim Filter As String
With e.Form.Controls("TextBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "组件名称 Like \'%" & .Value & "%\'" 
    End If
End With
Tables("医用耗材目录查询录入主窗口_Table1").Filter = Filter


当我在控件TextBox2输送下面的内容:3M灭菌指示胶带1222(19mm*55   点击按钮提示

Like 运算符中出错: 字符串模式“%3M灭菌指示胶带1222(19mm*55%”无效。
请问老师 出现这个错误提示的原因是什么,是不是不能输入有数字的内容?

--  作者:有点甜
--  发布时间:2018/6/12 11:48:00
--  

改成

 

Filter = Filter & "组件名称 Like \'%" & .Value.replace("*", "[*]") & "%\'" 


--  作者:蓝蚂蚁
--  发布时间:2018/6/12 12:28:00
--  
代码是看懂了 但不明白*为什么要用[]裹起来 是不是*是代表多个字符的原因?
--  作者:有点甜
--  发布时间:2018/6/12 14:26:00
--  
以下是引用蓝蚂蚁在2018/6/12 12:28:00的发言:
代码是看懂了 但不明白*为什么要用[]裹起来 是不是*是代表多个字符的原因?

 

看看

 

Like 运算符用于比较字符串,在 Like 比较中,* 和 % 作为通配符,两者可以互换,表示任意个数的字符,通配符只能在开头或者结尾出现。例如: 

[姓名] Like \'%赫%\'

[姓名] Like \'赫%\'

[姓名] Like \'%赫\'

分别表示姓名中包括“赫”,姓名开头是“赫”(姓赫),姓名结尾是“赫”

在字符串的中间不允许使用通配符。例如,不允许 \'赫*丰\',也不允许 \'赫%丰\'。

由于* 和 % 默认作为通配符,如果要将其作为比较内容的一部分,必须用方括号括起来,例如:

[型号] Like \'A[*]%\'

表示型号以“A*”开头。

在 Like 运算符之前,可以加上Not关键词,表示不类似的意思,例如:

[姓名] Not Like \'李%\'

表示姓名不是以“李”开头,也就是不是姓李的。