如何避免显示‘1899-12-30’?特急!!(88分)

  • 主题发起人 主题发起人 hzyingmu
  • 开始时间 开始时间
H

hzyingmu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADO连接ACCESS2000数据库,并用DBGrid1输入数据,当某条记录的日期型字段没有输
入任何内容时,用SQL语句查询时,显示该字段的内容是‘1899-12-30’,
:并且用Locate对日期进行查找时,若输入‘1899-12-30’则能查找到那条日期型
:字段为空的记录,但我在ACCESS2000中对该日期型字段并没有设置任何默认值属性,
:这究竟是怎么一回事?如何避免这种情况?若不能解决这个问题,我的报表的‘出生年月’
栏将有可能出现‘1899-12-30’这一不合逻辑的错误!
 
难道是M$的BUG?????还是彩蛋?????哈。
 
Microsfot的好像都有这个问题,我用sql7.0时也是这样,我的解决方法是用了计算字段来
显示,建一个计算字段在字段的ongettext事件中
if adoquery1.fieldbyname('日期').value<>null then
text:=adoquery1.feildbyname*('日期').asstring
else
text:='NULL'
 
我试试看
 
在数据库中设置默认值
或者检查不为空.
 
老兄你的网易问过的。 :)
 
用控制面板改一必区域设置中的时间设置。
terry_lzs的问题:本人遇到过。解决方法:建立ODBC数据源时不使用区域设置。问题没了!!
 
在SQL语句中用个函数isnull('日期','不清楚')
 
这不是BUG,跟区域设置也没有关系
在Delphi中,日期型的变量其实就是一个浮点数,记载着从1899-12-30午夜以来
经过的时间
这也是OLE2的标准
你试试就知道了:
DateToStr(0);
就会得到1899-12-30
解决的办法很简单,自己加个判断就是了
 
左兄说得对。但你的解决办法,好象是有点取巧。
我想不到你上面的四句解释。
但我也想到这个解决办法。
 
啊?Date型的数据是浮点数??我还以为是Word型的呢![:(!]
 
我用sql2000也遇到过这个问题:日期为空时,datetostr(日期)得'1988-12-31'
还有奇怪的是如果日期输入为1950-12-12,datetostr时得2050-12-12没有办法
最后只有加判断解决了
 
有时,我只想显示时间,但DELPHI却在前面强加了1899-12-30,请问各位如何解决.不胜感激.
 
用null排除一下就行了。
 
用null排除一下就行了。
 
在记录集中设置相应字段格式为: hh:mm:ss
 
在FORM的ONACTIVE的事件中加入
DateTimePicker1.DateTime:=now
即可!
 
表示日期的字段,我一般都用CHAR类型,一样计算,只是在程序中控制一下。
 

Similar threads

后退
顶部