Foxtable(狐表)用户栏目专家坐堂 → 老大 看看这个是不是net造成的?


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

主题:老大 看看这个是不是net造成的?

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/1 14:06:00 [显示全部帖子]

这里出了问题:

 If Filter > "" Then

      Filter = Filter & " Or "
End If
If t <> "" Then
      Filter = Filter & "[" & dc.Name & "] Like '%" & T & "%'" '根据控件值迷糊筛选
End If

 

改为:

If Filter = "" Then

     Filter = Filter & "[" & dc.Name & "] Like '%" & T & "%'" '根据控件值迷糊筛选
else
     Filter = Filter & " or [" & dc.Name & "] Like '%" & T & "%'" '根据控件值迷糊筛选
End If
 
否则,Filter 永远等于空,并不是一段时间,而是一直都这样,您没发现而已!

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/1 14:08:00 [显示全部帖子]

因为您定义的filter的值等于空,而您没有满足等于空赋值的代码,所以,filter永远为空!

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/1 14:11:00 [显示全部帖子]

代码执行到最后,您的filter最多会有这样一个值:  "受理时间 >= #" & .Value & "#",其他什么or、and之类的都没有!

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/1 14:52:00 [显示全部帖子]

如果是SQL数据源,改用下面的代码:

Dim T As String = e.Form.Controls("TextBox1").text '定义控件的值
Dim Filter As String =""  '定义筛选
For Each dc As Col In Tables(e.form.Name & "_Table1").Cols '遍历表的所有列
    If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then  '如果是时间列,逻辑列,数值列
        Continue For    '排除
    End If
    If Filter = "" Then
        Filter = Filter & "[" & dc.Name & "] Like '%" & T & "%'" '根据控件值迷糊筛选
    Else
        Filter = Filter & " or [" & dc.Name & "] Like '%" & T & "%'" '根据控件值迷糊筛选
    End If
Next

With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        If Filter = "" Then
            Filter = "[受理时间] >= '" & .Value & "'"
        Else
            Filter = Filter & " and [受理时间] >= '" & .Value & "'"
        End If
    End If
End With
With e.Form.Controls("DateTimePicker2")
    If .Value IsNot Nothing Then
        If Filter = "" Then
            Filter = "[受理时间] <= '" & .Value & "'"
        Else
            Filter = Filter & " and [受理时间] <= '" & .Value & "'"
        End If
    End If
End With
DataTables(e.form.Name & "_Table1").loadFilter = Filter  '将数据筛选出来
DataTables(e.form.Name & "_Table1").load
Tables(e.Form.Name & "_Table1").AutoSizeCols()
[此贴子已经被作者于2013-3-1 14:59:40编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/2 10:15:00 [显示全部帖子]

1、这一段代码在老朱一楼加的是备注符号(单引号),所以我给删除了:

 

If filter > "" Then
    filter = "(" & filter & ")"
End If

2、最后一个判断不必要使用,因为filter为空,自动加载全部,


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/2 10:57:00 [显示全部帖子]

问题就应该出在加括号那里,加上那一段后面的日期筛选才起作用!
[此贴子已经被作者于2013-3-2 10:57:28编辑过]

 回到顶部