以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]动态合成表达式的问题!!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25720)

--  作者:gaoyong30000
--  发布时间:2012/11/15 11:28:00
--  [求助]动态合成表达式的问题!!
 Dim s As String = Tables("综合部物品分类设置_综合部物品分类设置Table1").current("分类编号")
Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "分类编号 Like \'" & s & "%\'"

上面这个 换成

Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "分类编号 Like \'" & s & "???\'"
有问题嘛  貌似我最后筛选不出想要的数据~~


--  作者:lin_hailun
--  发布时间:2012/11/15 11:32:00
--  
 如果是sqlserver数据库的话,? 改成 _

--  作者:程兴刚
--  发布时间:2012/11/15 11:36:00
--  

注意匹配符号的规律:

 

Like运算符

Like使用通配符来比较字符串。

可用的通配符有:

字符 说明
? 任何单个字符
* 零或多个字符
# 任何单个数字(0 到 9)
[字符列表] 字符列表中的任何单个字符,例如[abx]表示a、b、x三个字符中的任何一个。
[!字符列表] 不在字符列表中的任何单个字符,例如[!abx]表示除a、b、x之外的任何一个字符。

方括号中的字符列表,可以使用连字符 (–) 将范围的上下限分开,例如[a-e]表示字母a到e中的任意一个,[a-z]就表示任意一个字母,而[0-9]表示任意一数字。

将下面的代码复制到命令窗口执行,请留意注释和执行结果:

\'任意3个字符,后接3个数字
Output.Show(
"ABC123" Like "???###") \'匹配
Output.Show(
"A1212A" Like "???###") \'不匹配
\'任意一个字符,随后是ABC三字符中的任意一个

Output.Show(
"RB" Like "?[ABC]") \'匹配
Output.Show(
"RD" Like "?[ABC]") \'不匹配
\'任意一个字符,随后是除ABC三字符之外的任意一个字符

Output.Show(
"RB" Like "?[!ABC]") \'不匹配
Output.Show(
"RD" Like "?[!ABC]") \'匹配
\'任意一个字母,随后是两个数字

Output.Show(
"a12" Like "[a-z]##") \'匹配
Output.Show(
"112" Like "[a-z]##") \'不匹配

 


--  作者:gaoyong30000
--  发布时间:2012/11/16 9:26:00
--  
  Dim s As String = Tables("综合部物品分类设置_综合部物品分类设置Table1").current("分类编号")
Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "分类编号 Like \'" & s & "___\'"

貌似还是不行~~~

--  作者:lin_hailun
--  发布时间:2012/11/16 9:29:00
--  
 有例子不?不会有这样的问题吧?
--  作者:gaoyong30000
--  发布时间:2012/11/16 10:03:00
--  
采用的sqltable型

Dim s As String = Tables("综合部物品分类设置_综合部物品分类设置Table1").current("分类编号")
Dim i As Integer = s.LastIndexOf(".")
s = s.SubString(0,i)

Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "分类编号 Like \'" & s & "___\'"


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看



[此贴子已经被作者于2012-11-16 10:04:12编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/16 10:11:00
--  
 楼主,你是想筛选同级的行吗?直接比较字符数不行么?

Dim s As String = Tables("综合部物品分类设置_综合部物品分类设置Table1").current("分类编号")
Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "len(分类编号) = " & s.Length

--  作者:gaoyong30000
--  发布时间:2012/11/16 10:32:00
--  
麻烦了~!

您那代码是筛选出相同长度的行,我的想法是:比如下图的我选择的是01.03.02  ,我要筛选的是01.03开头的同级行,而不是全部的同级行


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看



--  作者:gaoyong30000
--  发布时间:2012/11/16 10:35:00
--  
以下是引用lin_hailun在2012-11-16 10:11:00的发言:
 楼主,你是想筛选同级的行吗?直接比较字符数不行么?

Dim s As String = Tables("综合部物品分类设置_综合部物品分类设置Table1").current("分类编号")
Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "len(分类编号) = " & s.Length


有个很奇怪的地方 filter 后面的条件 不是需要 “ ” 括起来吗  您这怎么不需要?

--  作者:lin_hailun
--  发布时间:2012/11/16 10:37:00
--  
 哦哦,那就这样。

Dim s As String = Tables("综合部物品分类设置_综合部物品分类设置Table1").current("分类编号")
Dim i As Integer = s.LastIndexOf(".")
s = s.SubString(0,i)

Tables("综合部物品分类设置_综合部物品分类设置Table1").filter = "Left(分类编号, " & i & ") = s And len(分类编号) = " & s.Length