Foxtable(狐表)用户栏目专家坐堂 → [分享]拼音首字母筛选


  共有65824人关注过本帖树形打印复制链接

主题:[分享]拼音首字母筛选

帅哥哟,离线,有人找我吗?
reachtone
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:1482 积分:9602 威望:0 精华:15 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/11/2 14:42:00 [只看该作者]

顶!


 回到顶部
帅哥哟,离线,有人找我吗?
kitty
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:99 积分:1589 威望:0 精华:0 注册:2011/9/19 0:57:00
  发帖心情 Post By:2012/11/2 19:02:00 [只看该作者]

七号出品,必属精品。

可是为什么是开发版的格式呢,强烈建议发布商业、试用版格式的。

[此贴子已经被作者于2012-11-2 19:03:25编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
blueskyyq
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:295 积分:1856 威望:0 精华:1 注册:2012/7/9 23:25:00
  发帖心情 Post By:2012/11/2 20:51:00 [只看该作者]

好东西要顶

 回到顶部
帅哥哟,离线,有人找我吗?
bohe
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:865 积分:7298 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2012/11/2 20:59:00 [只看该作者]

顶一下

 回到顶部
帅哥哟,离线,有人找我吗?
476240618
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:122 积分:1122 威望:0 精华:1 注册:2011/9/16 14:49:00
  发帖心情 Post By:2012/11/3 8:57:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:bpc4okcax(o18ly6}tb22p.jpg
图片点击可在新窗口打开查看
论坛上很早就有这种例子了,可以多列查询的,代码贴出来给大家研究下,不用添加列的。

Dim t As Table =Tables("物料明细_Table2")
Dim py,Lm,Ts, Bm,sql,Lb,sl As String
Dim Ls As New List(Of Integer)
Dim Lss As New List(Of String)
Static st As String

Dim drs As New List(of DataRow)                        '定义一个DataRow行的集合
Ts = "物料编码,物料名称,所属车型,规格,材质,供应商,仓库"                                    '查询相关列
Bm = "物料清单"
If st = e.sender.Text.ToUpper Then
    Return
Else
   st = e.sender.Text.ToUpper
End If   
e.sender.Text =  st
Sendkeys.Send("^{END}")                                    '光标定于输入框最后

drs = DataTables(Bm).Select("物料名称 > ''")
'赋值drs=员工表--姓名列不为空的 DataRow行
If drs.count > 0 Then                                             '如drs行数>0,执行...
    If st IsNot Nothing Then                                    '如输入框内容不为空,执行...
        For Each Lm In Ts.split(",")                            '遍历查询相关列
            For Each dr As DataRow In drs                   '遍历所有行
                py = GetPY(dr(Lm),True)                       '赋值py = 查询行查询列的简拼
                If dr(Lm).IndexOf(st)> -1 OrElse py.IndexOf(st) > -1 Then
                                                                              '如查询行查询列内容(或简拼)包含输入框内容,执行...
                    If Ls.Contains(dr("_Identify")) = False Then    '如不包含则增加
                        ls.Add(dr("_Identify"))
                    End If                  
                    If Lss.Contains(dr(Lm)) = False Then
                        Lss.Add(dr(Lm))
                    End If
                   
                End If
            Next
        Next
        If Ls.count > 0 Then
            For Each n As Integer In Ls
                sql+ = ","  & n                                                            
            Next
            sql = "[_Identify] In(" & sql.Trim(",") & ")"                            '包含主键[_Identify]内容
            sql = "select " & Ts & " from{" & Bm & "} where " & sql          '合成SQL语句
            t.Fill(sql,"安琦乐",True)'生成SQL查询表
            For Each sl In Lss
                lb+ = "|"  & sl
            Next
            e.sender.ComboList = lb                                                      '形成输入框列表
        Else
            MessageBox.show("抱歉,数据库中没有您想查询的信息!" )
            'e.sender.value =  ""
            e.sender.Select
            Return          
        End If     
    End If


 回到顶部
帅哥哟,离线,有人找我吗?
476240618
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:122 积分:1122 威望:0 精华:1 注册:2011/9/16 14:49:00
  发帖心情 Post By:2012/11/3 8:58:00 [只看该作者]

以下是引用Fotable在2012-10-24 11:15:00的发言:

说一下楼主的思路:(辅助列实现)

1、给要实现拼音首字查询的中文列,建立一个辅助列里面存放简拼拼音。(简拼在datacolchanged事件中根据中文自动生成。

2、在text框内 textchange事件中设置表的筛选表达式 首字拼音 like  输入。

 

说说这种方法的缺点:

1、必须要给要查询的中文列,要增加一个辅助列。浪费了存储空间。

2、假如要对表中的任意中文字段列,实现拼音首字智能查询,这种方法就难以实现。

上一楼忘记引用了


 回到顶部
帅哥哟,离线,有人找我吗?
qq121454970
  27楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:853 积分:6592 威望:0 精华:3 注册:2012/4/22 18:06:00
  发帖心情 Post By:2012/11/3 15:18:00 [只看该作者]

好东西,收藏

 回到顶部
帅哥哟,离线,有人找我吗?
hanxuntx
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2617 积分:16941 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2012/11/3 15:23:00 [只看该作者]

以下是引用476240618在2012-11-3 8:57:00的发言:

。。。。。。。

            Next
            e.sender.ComboList = lb                                                      '形成输入框列表
        Else
            MessageBox.show("抱歉,数据库中没有您想查询的信息!" )
            'e.sender.value =  ""
            e.sender.Select
            Return          
        End If     
    End If

。。。。。。

写的不错,学习了。

是否添加列是要根据情况来的。

主要是看数据量,如果数据量特别大的话,比如几十万行,添加的这一列就相当于索引了。

如果大数据量还要每行计算的话,速度就慢了很多,添加列的优势就在这里了。


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5165 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/11/3 16:54:00 [只看该作者]

呵呵,学习了。


 回到顶部
帅哥哟,离线,有人找我吗?
sclszjb1206
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:15 积分:234 威望:0 精华:0 注册:2011/10/2 7:04:00
  发帖心情 Post By:2012/11/3 17:05:00 [只看该作者]

值得推广

 回到顶部
总数 382 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..39