以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论]模糊查询不支持?和#吗  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29471)

--  作者:lsy
--  发布时间:2013/3/7 12:54:00
--  [讨论]模糊查询不支持?和#吗
*号不限定长度,?和#限定长度,很方便,但狐表的模糊查询、筛选,好像只支持*,用起来好别扭。
--  作者:zerov
--  发布时间:2013/3/7 13:00:00
--  回复:(lsy)[讨论]模糊查询不支持?和#吗
看帮助文件吧,还支持%符号,例如”王%“表示搜索王字开头的数值
--  作者:lsy
--  发布时间:2013/3/7 13:14:00
--  
以下是引用zerov在2013-3-7 13:00:00的发言:
看帮助文件吧,还支持%符号,例如”王%“表示搜索王字开头的数值

说支持是没用的,用在实例中,显示预想的结果,才行。*号和%的效果是一样的,#和?是没效果,但是我需要固定长度的模糊查询。

[此贴子已经被作者于2013-3-7 13:22:22编辑过]

--  作者:lsy
--  发布时间:2013/3/7 14:06:00
--  

If e.Node.Name = "全部" Then
    \'Tables("部门表_Table1").Filter = "编码 In (\'01\',\'02\',\'03\',\'04\',\'05\')"        \'不得已,改用这一句
    Tables("部门表_Table1").Filter = "编码 Like \'" & "??\'"                            \'?号无效
Else
    Tables("部门表_Table1").Filter = "编码 Like \'" & e.Node.Name & "*\'"       \'*号不能固定长度。

End If


--  作者:lsy
--  发布时间:2013/3/7 14:29:00
--  
简单东西复杂化了,还是谢谢你。
--  作者:lsy
--  发布时间:2013/3/7 14:39:00
--  
以下是引用muhua在2013-3-7 14:15:00的发言:

 

如果实在需要,就用这种方法吧:

Dim s As String = "cv"

Tables("表A").Filter = "[第一列] like \'*" & s & "*\' and len([第一列]) = (4-" & s.Length & ")"

 

变通的办法,没办法的办法,目的达到了,这才是最重要的,再次表示感谢。


--  作者:lsy
--  发布时间:2013/3/7 14:49:00
--  

最终版本:

If e.Node.Name = "全部" Then   
    Tables("部门表_Table1").Filter = "Len([编码]) = 2" 
Else
    Tables("部门表_Table1").Filter = "编码 Like \'" & e.Node.Name & "*\' And Len([编码]) = (" & e.Node.Name.Length + 2 & ")"
End If


--  作者:狐狸爸爸
--  发布时间:2013/3/7 14:52:00
--  

呵呵,表达式由.net决定,我无法做主。

当初foxtable做架构的时候,就很犹豫,是像易表这样,自己开发一套表达式解析器? 还是直接用微软.Net内置的呢?

 

考虑到Foxtable除了表达式,还可以写代码,所以最后选择了.net内置的。


--  作者:lsy
--  发布时间:2013/3/7 15:02:00
--  
以下是引用狐狸爸爸在2013-3-7 14:52:00的发言:

呵呵,表达式由.net决定,我无法做主。

当初foxtable做架构的时候,就很犹豫,是像易表这样,自己开发一套表达式解析器? 还是直接用微软.Net内置的呢?

 

考虑到Foxtable除了表达式,还可以写代码,所以最后选择了.net内置的。

VB,PB我都接触过,觉得狐表很不错,十几年来,我一直做his数据库系统的管理员,一开始是SQL,现在是Oracle,前者死锁太频繁,后者偶尔出现死锁。一直是看猪跑,用别人开发的软件,没养过猪,有了狐表,看能不能自己养头猪玩玩。