日期字段不会为空的,它会初始为0,而日期型实际上是用Double型保存的,0就是日期1899年12月31日,后面那个问题,我不清楚

解决方案 »

  1.   

    这是正常的,null转换成日期字段时会变成1899-12-31,这是DELPHI 的数据转换问题
      

  2.   

    null转换成日期字段时会变成1899-12-31,这是个很烦的事,我也为这困扰
      

  3.   

    试试看
    qryList1.ParamByName('pay_date').asdatetime:= qryList2.fieldbyname('Pay_date').Asstring;
    我曾经这样用过,而且通过了,当然,是当时一不小心写错了,不过也算是一个发现吧。
    :p
      

  4.   

    有的时候,就这么奇怪。
    没办法的时候,我就做一些脱裤子放屁的事情来:
       strtodate(FormatDatetime('yyyy-m-d', date));
    这样就一班就不会错了。总觉得这是跟delphi的数据类型检测有关系。我在看pascal的指针的时候,有这么一段,说:
    a: ^integer;
    b: ^integer;a与b就不兼容,不可以这样互相赋值。所以我就不明白了。
      

  5.   

    刚才不小心写错了,应该这样:
    qryList1.ParamByName('pay_date').value:= qryList2.fieldbyname('Pay_date').Asstring;
      

  6.   

    TO liuzilu :你的解答好象没有可行性呀,因为前后两个类型都部一样,DELPHI
    本身编译都通不过呀!如果前后都以Asstring 类型来保存,那存储的数据还是如我以前所说的 ‘1900-01-01’ 呀?
      

  7.   

    原因不知道,可以先判断.IsNull后进行复制,如果为空, 使用SetNull
      

  8.   

    兄弟门,谢谢大家,我终于找倒办法了,我改程序成这样的了   
       if qryList1Pay_date.Asstring='' then
           qryList1.ParamByName('pay_date').value:=null  else
          qryList1.ParamByName('pay_date').asdatetime:=qryList1Pay_date.AsDateTime不过还是要谢谢大家,给分了!