Foxtable(狐表)用户栏目专家坐堂 → 模糊筛选过滤的问题


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

主题:模糊筛选过滤的问题

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
模糊筛选过滤的问题  发帖心情 Post By:2014/6/5 19:14:00 [只看该作者]

'按输入的值模糊筛选
Dim txt As String = e.Form.Controls("TextBox1").Text
Dim tbl As Table = Tables(e.form.name & "_Table1")
If txt > "" Then
    txt = "'*" & txt & "*'"
    txt =  "规格 Like " & txt & " Or 日期 Like " & txt & " Or 数量 Like " & txt & " Or 产品名称 Like " & txt & " Or 产品规格 Like " & txt & " Or 工序名称 Like " & txt
    tbl.filter = txt
Else
    tbl.Filter = ""
End If

上面是模糊查找的文本框

TextChanged通用代码,有以下两个问题请教:

1、上述代码如果字段全部是字符型数据没问题,如果还要包括日期或数值字段模糊查找要怎么写才能通用?

2、用户的规格列类似:2.0*1.0*152,因为当中有“*”号,当在查找框中输入*号时就会提示出错,要怎么办?

 

谢谢!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 19:16:00 [只看该作者]

Dim txt As String = e.Form.Controls("TextBox1").Text
Dim tbl As Table = Tables(e.form.name & "_Table1")
If txt > "" Then
    txt = "'*" & txt.Replace("*", "[*]") & "*'"
    txt =  "规格 Like " & txt & " Or 日期 Like " & txt & " Or 数量 Like " & txt & " Or 产品名称 Like " & txt & " Or 产品规格 Like " & txt & " Or 工序名称 Like " & txt
    tbl.filter = txt
Else
    tbl.Filter = ""
End If

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/5 20:17:00 [只看该作者]

谢谢!第二个问题是可以了,

请问第一个问题呢,如果有日期或数值字段时出现类似下面的错误提示:

“无法在 System.Double 和 System.String 上执行“Like”操作。”

 

是不是在同一个文本框中只能用字符不能用日期和数字字段来实现这样的模糊查找,因为like不支持,有无其他方法解决这个?

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 20:19:00 [只看该作者]

txt =  "规格 Like " & txt & " Or Convert(日期, 'System.String') Like " & txt & " Or 数量 Like " & txt & " Or 产品名称 Like " & txt & " Or 产品规格 Like " & txt & " Or 工序名称 Like " & txt

 


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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/5 20:23:00 [只看该作者]

谢谢,原来是要转换一下。

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/6 16:36:00 [只看该作者]

因为加入了日期,和数值列,模糊筛选总提示这个错误:


此主题相关图片如下:360截图20140606162807135.jpg
按此在新窗口浏览图片

 

代码如下:

If txt > "" Then
    txt = "'%" & txt.Replace("*","[*]") & "%'"
    Dim dr As DataRow = DataTables("QtbSet").Find("WinN = '" & args(0) & "' and SearchCols is not null") '获取模糊查找筛选列
    If dr IsNot Nothing Then
        Dim flt,flt2 As String
        Dim Cols() As String = dr("SearchCols").split(",")  ’有这些列:供应商,产品编码,采购数量,采购日期
        For i As Integer = 0 To Cols.Length -1
            If flt > "" Then
                flt = flt & " or "
            End If
            If tbl.Cols(i).IsNumeric OrElse tbl.Cols(i).IsDate Then  ‘如果是数值列或日期列
                flt = flt & " Convert(Cols(i),'System.String') like " & txt  '将数值或日期转换为字符
            Else
                flt = flt & Cols(i) & " like " & txt
            End If
        Next
        tbl.filter = flt
    Else
        tbl.filter = ""
    End If
End If


写代码时没提示错误,问题出在哪里?

 

谢谢!


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/6/6 16:37:00 [只看该作者]

flt = flt & " Convert(" & tbl.Cols(i).Name & ",'System.String') like " & txt 
[此贴子已经被作者于2014-6-6 16:37:34编辑过]

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/6 17:24:00 [只看该作者]

谢谢BIN!

 回到顶部