Foxtable(狐表)用户栏目专家坐堂 → 模糊查询


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

主题:模糊查询

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


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
模糊查询  发帖心情 Post By:2014/2/27 10:30:00 [只看该作者]

帮助里面的模糊查询,是在代码中写入相对应的列进行模糊查询。
我想在TextBox类型里面指定某个表进行全部列,全部内容的模糊查询,如果按照帮助里面的内容进行更改,就需要把所有列写入代码中,有没有简洁的代码来代替一下,不用输入所有列。

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


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

for 循环一个个拼接

for each c as col in tables("XX").cols
      Filter = Filter & c.name & " = '" & .Value & "' or "
next

最后记得把 最后面的OR 切割掉

Filter=Filter.trim().substring(Filter,length-2,2)

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


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

模糊查询应该用LIke 自行调整一下.

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


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
  发帖心情 Post By:2014/2/27 10:45:00 [只看该作者]

With e.Form
    If e.sender.text <> "输入计划号/订单号查询" Then
Dim txt As String = e.Form.Controls("a").Text
If txt = "" Then
    Tables("合同信息").Filter = ""
 Else
    txt = "'*" & txt & "*'"
    Tables("合同信息").Filter = "计划号 Like " & txt & " Or 订单号 Like " & txt & " Or 砖号 Like " & txt 
   End If
End If
End With
老师你帮我改一下谢谢了

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


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

图片点击可在新窗口打开查看代码就是2楼的代码啊,连套用都不会吗.


With e.Form
    If e.sender.text <> "输入计划号/订单号查询" Then
        Dim txt As String = e.Form.Controls("a").Text
        If txt = "" Then
            Tables("合同信息").Filter = ""
        Else
            Dim Filter As String
            For Each c As Col In Tables("合同信息").cols
                Filter = Filter & c.name & " like '*" & txt  & "*' or "
            Next
            Filter=Filter.trim().substring(0,Filter.length-3)
            Tables("合同信息").Filter=Filter
        End If
    End If
End With

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


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
  发帖心情 Post By:2014/2/27 10:56:00 [只看该作者]

让老师见笑了

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


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
  发帖心情 Post By:2014/2/27 10:58:00 [只看该作者]

老师我还有一个问题就是我的表里面含有日期列,如何解决冲突问题?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/2/27 11:01:00 [只看该作者]

实际上,只有字符列才能Like,加上判断就行:

 

With e.Form
    If e.sender.text <> "输入计划号/订单号查询" Then
        Dim txt As String = e.Form.Controls("a").Text
        If txt = "" Then
            Tables("合同信息").Filter = ""
        Else
            Dim Filter As String
            For Each c As Col In Tables("合同信息").cols
                if c.IsString Then
                     Filter = Filter & c.name & " like '*" & txt  & "*' or "
                End if

            Next
            Filter=Filter.trim().substring(0,Filter.length-3)
            Tables("合同信息").Filter=Filter
        End If
    End If
End With


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


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

With e.Form
    If e.sender.text <> "输入计划号/订单号查询" Then
        Dim txt As String = e.Form.Controls("a").Text
        If txt = "" Then
            Tables("合同信息").Filter = ""
        Else
            Dim Filter As String
            For Each c As Col In Tables("合同信息").cols
                If c.IsDate Then
                    Filter = Filter & "Convert([" & c.name & "],'System.String')' Like '*" & txt  & "*' or "
                Else
                    Filter = Filter & c.name & " like '*" & txt  & "*' or "
                End If
            Next
            Filter=Filter.trim().substring(0,Filter.length-3)
            Tables("合同信息").Filter=Filter
        End If
    End If
End With

判断一下即可.

 

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/2/27 11:04:00 [只看该作者]

还有,既然你输入的查询内容只是计划号或订单号,没有必要遍历所有列,直接指定这两列即可:

 

With e.Form
    If e.sender.text <> "输入计划号/订单号查询" Then
        Dim txt As String = e.Form.Controls("a").Text
        If txt = "" Then
            Tables("合同信息").Filter = ""
        Else
            Tables("合同信息").Filter= “计划号  like '*" & txt  & "*' or 订单号 Like '*" & txt & "*'"
        End If
    End If
End With

[此贴子已经被作者于2014-2-27 11:04:27编辑过]

 回到顶部
总数 11 1 2 下一页