以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  老大 看看这个是不是net造成的?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29186)

--  作者:blackzhu
--  发布时间:2013/3/1 13:40:00
--  老大 看看这个是不是net造成的?
Dim T As String = e.Form.Controls("TextBox1").Value \'定义控件的值
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 & " Or "
    End If
    If t <> "" Then
        Filter = Filter  & "[" & dc.Name & "] Like \'%" & T & "%\'"    \'根据控件值迷糊筛选
    End If
Next
\'If filter.Contains("Or") Then
    \'filter = "(" & filter & ")"
\'End If
With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "受理时间 >= #" & .Value & "#"
    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 & "#"
    End If
End With
\'MessageBox.Show(filter)
If Filter > "" Then
    DataTables(e.form.Name & "_Table1").loadFilter = Filter  \'将数据筛选出来
    DataTables(e.form.Name & "_Table1").load
End If
Tables(e.Form.Name & "_Table1").AutoSizeCols()


     这段代码有无问题,我现在有个奇怪的事 .
    我测试输入了一个时间段加载的数据,没有任何问题.
    但是我发布了一个项目交给人家客户使用, 他输入一个时间段以后 加载的数据是全部的.没有按照这个时间段加载.  这个是不是net的问题?
[此贴子已经被作者于2013-3-1 13:48:15编辑过]

--  作者:zerov
--  发布时间:2013/3/1 13:46:00
--  
跟踪
--  作者:blackzhu
--  发布时间:2013/3/1 13:56:00
--  
重新发布了后 据说没有问题了   没有修改任何东西.
--  作者:狐狸爸爸
--  发布时间:2013/3/1 13:57:00
--  

这个不会的,只有一个原因,所有行都符合你合成的额条件。

因为你用or连接各个条件,只要其中有一个条件所有行都符合,就全部加载了。

既然他使用一段时间就全部加载了,那就等他出问题的时候,将他数据库拿过来测试就行了。


--  作者:程兴刚
--  发布时间: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 永远等于空,并不是一段时间,而是一直都这样,您没发现而已!

--  作者:程兴刚
--  发布时间:2013/3/1 14:08:00
--  
因为您定义的filter的值等于空,而您没有满足等于空赋值的代码,所以,filter永远为空!
--  作者:程兴刚
--  发布时间:2013/3/1 14:11:00
--  
代码执行到最后,您的filter最多会有这样一个值:  "受理时间 >= #" & .Value & "#",其他什么or、and之类的都没有!
--  作者:blackzhu
--  发布时间:2013/3/1 14:20:00
--  
问题是 我测试了  不管加不加 都可以成功加载的. 而且这个代码 我用了不是一天了.
--  作者:blackzhu
--  发布时间:2013/3/1 14:21:00
--  
程版  问题是 我没有加载 文本框条件  只是按照时间段加载 而已  所以不存在这个问题的.
--  作者:blackzhu
--  发布时间:2013/3/1 14:26:00
--  
代码执行到最后,您的filter最多会有这样一个值:  "受理时间 >= #" & .Value & "#",其他什么or、and之类的都没有!



  对呀  我测试过了 加了 文本框值  就连接or 一类的都没有了,只有

tables(xxx).filter ="时间列>=# 2012-12-25 & # And 时间列 <= # 2012-12-30 #    一类的字符串 ,那么筛选也是对的.  关键是加载全部了.