以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  模糊筛选时日期的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53513)

--  作者:scott518
--  发布时间: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
--  发布时间:2014/7/9 16:29:00
--  
应该是因为你该电脑的系统日期格式就是2014-05-01这样的. 导致录入的数据格式不同.  尝试录入日期时,统一格式.
--  作者:scott518
--  发布时间:2014/7/9 16:59:00
--  
那要怎么才能统一格式呢,项目中的日期都是全部统一用下拉选择的,是不是因为每个人的电脑中系统日期设置不同造成的?那这样要怎么统一?
--  作者:Bin
--  发布时间:2014/7/9 17:04:00
--  
在DataColChangING事件中

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

--  作者:有点甜
--  发布时间: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