Foxtable(狐表)用户栏目专家坐堂 → loadfilter 无法多条件筛选问题


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

主题:loadfilter 无法多条件筛选问题

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
loadfilter 无法多条件筛选问题  发帖心情 Post By:2019/10/2 20:09:00 [只看该作者]

无法多条件筛选


Dim txt As String = e.Form.Controls("TextBox").Text
Dim tbl As Table = Tables("订单_Table1")


With e.Form.Controls("textbox1")

If txt = "" Then
     tbl.Filter = ""
Else
    txt = "'%" & txt & "%'"
    tbl.DataTable.loadFilter = "([客户名称] like '%" & .Value & "%' Or [公司名称] like '%" & .Value & "%' )"
        tbl.DataTable.loadPage = 0
        tbl.DataTable.load
End If

End With

With e.Form.Controls("textbox2")

If txt = "" Then
     tbl.Filter = ""
Else
    txt = "'%" & txt & "%'"
    tbl.DataTable.loadFilter = "([产品名称] like '%" & .Value & "%' )"
        tbl.DataTable.loadPage = 0
        tbl.DataTable.load
End If

End With

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/10/2 20:10:00 [只看该作者]

不在问题出在哪里

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


加好友 发短信
等级:幼狐 帖子:83 积分:733 威望:0 精华:0 注册:2016/12/2 15:17:00
  发帖心情 Post By:2019/10/2 20:36:00 [只看该作者]

把筛选的语句输出来,看看问题在哪里.

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/10/3 11:06:00 [只看该作者]

测试另外一段代码,也是不行:


Dim Filter As String
Dim tbl As Table = Tables("订单_table1")

With e.Form.Controls("textbox1")
    If .Value IsNot Nothing Then
        tbl.DataTable.loadFilter =  "客户名称 like '%" & .Value & "%' Or 公司名称 like '%" & .Value & "%' “   
        tbl.DataTable.loadPage = 0
        tbl.DataTable.load
End If 
End With


With e.Form.Controls("textbox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If 
 Filter = Filter &  "产品名称 like '%" & .Value & "%'”         
        tbl.DataTable.loadFilter = Filter         
        tbl.DataTable.loadPage = 0
        tbl.DataTable.load

    End If
End With


With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= '" & .Value & "'"
tbl.DataTable.loadFilter = Filter        
tbl.DataTable.loadPage = 0
        tbl.DataTable.load
    End If
End With


With e.Form.Controls("DateTimePicker2")
    If .Value IsNot Nothing Then
        If Filter <"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= '" & .Value & "'"
tbl.DataTable.loadFilter = Filter        
tbl.DataTable.loadPage = 0
        tbl.DataTable.load
    End If
End With



textbox1 和 textbox2 只能二选一,要么显示所有输入的客户名称或者公司名称,要么显示所有输入的产品名称,无法显示输入的客户名称和产品名称的搜索结果。 而datetimepicker则没问题,输入一个客户名称,选择时间,则可以显示那段时间的客户
[此贴子已经被作者于2019/10/3 11:07:18编辑过]

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/10/3 17:16:00 [只看该作者]

花了一天时间研究,问题已解决。附解决办法:把loadfilter放在最后就可以

Dim Filter As String
Dim tbl As Table = Tables("订单_table1")

With e.Form.Controls("textbox1")
    If .Value IsNot Nothing Then
        Filter =  "客户名称 like '%" & .Value & "%' Or 公司名称 like '%" & .Value & "%' “    
End If 
End With


With e.Form.Controls("textbox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If 
 Filter = Filter &  "产品名称 like '%" & .Value & "%'”         
  
    End If
End With



If Filter > "" Then
tbl.DataTable.loadFilter = Filter         
tbl.DataTable.loadPage = 0
tbl.DataTable.load
End If

 回到顶部