Foxtable(狐表)用户栏目专家坐堂 → 模糊筛选时日期的问题


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

主题:模糊筛选时日期的问题

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
模糊筛选时日期的问题  发帖心情 Post By:2014/7/9 16:27:00 [只看该作者]

当一个表中加载了数据后,在文本框中输入文字后会模糊筛选,文本改变时的代码中用了日期的转换:

If tbl.Cols(Cls(i)).IsNumeric OrElse tbl.Cols(Cls(i)).IsDate Then  '将数值或日期转换为字符
    flt = flt & " Convert(" & Cls(i) & ",'System.String') like " & txt
Else
    flt = flt & Cls(i) & " like " & txt
End If

问题如下:
同一个表中的数据,有的用户输入2014-05-01可以筛选出数据,但有的用户同样的输入却没有数据,必须要输入2014-5-1,即不要月和日前面的那个0,这种情况是怎么产生的?会不会和上面的转换代码有关系?同一台电脑上应该不会同时出现上述两种情况吧

 

谢谢!


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


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

应该是因为你该电脑的系统日期格式就是2014-05-01这样的. 导致录入的数据格式不同.  尝试录入日期时,统一格式.

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/7/9 16:59:00 [只看该作者]

那要怎么才能统一格式呢,项目中的日期都是全部统一用下拉选择的,是不是因为每个人的电脑中系统日期设置不同造成的?那这样要怎么统一?

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


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

在DataColChangING事件中

If e.DataCol.name="日期" Then
   e.NewValue=format(e.newValue,"yyyy-MM-dd")
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/9 17:07:00 [只看该作者]

 方案1:需要去设置每台电脑的日期格式,在控制面板那里。

 

 方案2:特殊处理一下

 

Dim d As Date
If Date.TryParse(txt, d) Then
    msgbox("是日期")
Else
    msgbox("不是日期")
End If

 

If tbl.Cols(Cls(i)).IsNumeric Then  '将数值或日期转换为字符
    flt = flt & " Convert(" & Cls(i) & ",'System.String') like " & txt
Else If  tbl.Cols(Cls(i)).IsDate  Then
    flt = flt & cls(i) & " = #" & d & "#"
Else
    flt = flt & Cls(i) & " like " & txt
End If


 回到顶部