以文本方式查看主题 - 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 --
对呀 我测试过了 加了 文本框值 就连接or 一类的都没有了,只有 tables(xxx).filter ="时间列>=# 2012-12-25 & # And 时间列 <= # 2012-12-30 # 一类的字符串 ,那么筛选也是对的. 关键是加载全部了.
|