以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]查询内容中包含*如何模糊查询--已解决,谢谢程老师  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=40391)

--  作者:shaifegh
--  发布时间:2013/9/17 20:37:00
--  [求助]查询内容中包含*如何模糊查询--已解决,谢谢程老师
我所查询的内容中在规格列可能包含“500*100*203”这类的数据,这样做的话模糊查询该怎么写啊,只要不出现*号一切正常,一带*号必报错。可是我的规格需要这种。
菜单代码如下:
Dim HeTongHao As String
Dim PiaoHao As String
Dim GuiGe As String

With RibbonTabs("废品登记")("fp查询")
    HeTongHao = .Items("合同号").Text
    PiaoHao = .Items("票号").Text
    GuiGe = .Items("规格").Text
   End With
Tables("废品登记").Filter = "[合同号] like \'*" & HeTongHao & "*\' And [票号] Like \'*" & PiaoHao & "*\'And [规格] Like \'*" & GuiGe & "*\'"
[此贴子已经被作者于2013-9-17 21:00:35编辑过]

--  作者:有点甜
--  发布时间:2013/9/17 20:43:00
--  
用 [*]

比如 Tables("xxx").Filter = "xxxxx like \'*[*]*\'"

--  作者:程兴刚
--  发布时间:2013/9/17 20:49:00
--  
Dim HeTongHao As String
Dim PiaoHao As String
Dim GuiGe As String

With RibbonTabs("废品登记")("fp查询")
    HeTongHao = .Items("合同号").Text
    PiaoHao = .Items("票号").Text
    GuiGe = .Items("规格").Text
    GuiGe = GuiGe.Replace("*","[*]")
   End With
Tables("废品登记").Filter = "[合同号] like \'*" & HeTongHao & "*\' And [票号] Like \'*" & PiaoHao & "*\'And [规格] Like \'*" & GuiGe & "*\'"

--  作者:shaifegh
--  发布时间:2013/9/17 20:50:00
--  
Like 运算符中出错: 字符串模式“*[*]*500*20*”无效。
Like 运算符中出错: 字符串模式“*[*]*500*”无效。
经测试只有在规格查询框为空值或*时可查询,但是只要规格查询框内出现除*外的任意字符报错

--  作者:有点甜
--  发布时间:2013/9/17 20:52:00
--  
 看3楼,测试一下。
[此贴子已经被作者于2013-9-17 20:52:20编辑过]

--  作者:shaifegh
--  发布时间:2013/9/17 20:54:00
--  
程老师的刚测试了,除了空值其余全报
--  作者:程兴刚
--  发布时间:2013/9/17 20:54:00
--  
以下是引用shaifegh在2013-9-17 20:50:00的发言:
Like 运算符中出错: 字符串模式“*[*]*500*20*”无效。
Like 运算符中出错: 字符串模式“*[*]*500*”无效。
经测试只有在规格查询框为空值或*时可查询,但是只要规格查询框内出现除*外的任意字符报错

很明显,除了两端的*其他都应该有中括号,请看3楼!


--  作者:shaifegh
--  发布时间:2013/9/17 20:57:00
--  
呵呵,程老师对不起,你的代码是正确的。我刚才忘记删*[*]*这个代码了
谢谢程老师

--  作者:shaifegh
--  发布时间:2013/9/17 20:57:00
--  
完美运行,结果满足需求
--  作者:程兴刚
--  发布时间:2013/9/17 21:03:00
--  
If e.Form.Controls("TextBox1").Value = Nothing
    MessageBox.show("请输入查找内容!")
    Return
End If
Dim s As String = e.Form.Controls("TextBox1").Value
s = s.Replace("[","[[]").Replace("]","[]]").Replace("*","[*]")
Tables("表A").Filter = "第一列 like \'*" & s & "*\'"