你只能给0,
if xxxx then parameters[2].Value:=0;
这是个数值类型的,是不能保存''的
你取出时判断一下,
if fieldbyname('mydate').value=0 then
showmessage('') else showmessage...

解决方案 »

  1.   

    这里表示方法0也表示了一个日期,
    如果你不想显示出来,你可以判断,
    double类型的(日期类型就是这个)是不可能保存''的,
    因为字是占8个字节,这8个字节里是一定有东西的。明白吗?
      

  2.   

    用if xxxx then parameters[2].Clear  试试
      

  3.   

    我有两个方法你可以试一下:
    1 用这个adoQuery.Parameters.ParamValues['f4'] := NULL; 也许是一样的,呵呵
    2 最彻底的方法是动态构建那个adoQuery 里的SQL语句,如果日期字段为空,则不写这个日期字段,或者在SQL里就把它赋为NULL。
    我自己一般的写法都不会用Parameters这个参数,感觉不是很好用,不如动态生成SQL来得方便,当然,如果要用到Blob字段,那就非用不可了(把BLOB字段生成文本而构建SQL语句,ADO会报错,BDE不会)
      

  4.   

    netlib(河外孤星) :如果是到access中,把0:00:00删除掉是可以的,也就是说它还是可以为空的呀,现在关键是取出时居然是1899-12-30这样的时间,如果能不显示就好了。由于是多个grid(mdi窗口各个窗口一个dbgrid),而adoquer只能一个,不知如何才能过滤掉这种时间?
      

  5.   

    我用的是dxdbGrid来显示数据,有个事件ongettext,不知有否作用:
    procedure Tfrmchayue.dxDBGridmColumn7GetText(Sender: TObject;
      ANode: TdxTreeListNode; var AText: String);
    begin
    不知如何写?数据库中取出的数据是什么样子的呢?就是在access中显示的0:00:00?
    end;
      

  6.   

    最简单的方法是那个字段不要用日期类型,用字符型,在代码中你再strtodata转换一下。