if EaskEdit_sj.Text<>'' then  
  query1.params[2].Asdate:=strtodate(EaskEdit_sj.text)
else
  query1.params[2].Asdate:=0;

解决方案 »

  1.   


    try
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text);
    except
      query1.params[2].Asdate:=null;
    end;//8888888888888888888
    if length(edit_dh.text) thenquery1.params[1].AsString:='';
      

  2.   

    try
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text);
    except
      query1.params[2].Asdate:=null;
    end;//8888888888888888888
    if length(edit_dh.text) = 0 thenquery1.params[1].AsString:='';
      
      

  3.   

    用Apollo47(阿波罗) 的方法 sj字段的内容为1899/12/30,我想让它为[null]
    用airhorse(编程至尊宝) 方法,出错,提示"Invalid variant type conversion"
    等待解答
      

  4.   


      对了,对数据库传递参数,null,会有问题,你还是用,其他值代替吧!
      

  5.   

    try
      if EaskEdit_sj.text=''  then Query1.SQL.add('insert into tmp(zh,lxdh)...')  
    //不 插入时间值else  'insert into tmp(zh,lxdh,sj)')  .....//插入时间值
    excetp
      ........
    end;
      

  6.   

    首先,sj字段必须可以为空,
    建议采用SQL语句插入
    INSERT INTO tmp(zh,lxdh,sj)VALUES (zh,null,null);
      

  7.   

    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.params[0].AsString:=edit_zh;
    query1.params[1].AsString:=edit_dh.text;
    if EaskEdit_sj.Text<>'' then  
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text)
    else
      query1.params[2].Asdate:=0;
    query1.ExecSQL;
    试试看吧。
      

  8.   

    machin(刷新一下) :
    你所说的和Apollo47(阿波罗) 的方法 一样!
    执行后法 sj字段的内容为1899/12/30,
    但我想让它为null快来帮我
      

  9.   

    if EaskEdit_sj.Text<>'' then  
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text)
    else
      query1.params[2].Asdate:=null;
      

  10.   

    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.params[0].AsString:=edit_zh;
    query1.params[1].AsString:=edit_dh.text;
    if EaskEdit_sj.Text<>'' then  
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text)
    else
      query1.params[2].Asdate:=null;
    query1.ExecSQL;
      

  11.   

    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.paramByName('zh').AsString:=edit_zh;
    query1.paramByName('lxdh').AsString:=edit_dh.text;
    Try 
      StrToDateTime(EaskEdit_sj.text);
      query1.paramByName('sj').Asdate:=strtodate(EaskEdit_sj.text);
    Except
      query1.ParamByName('sj').DateType:=ftDateTime;
      Query1.ParamByName('sj').Clear; 
    End;
    query1.ExecSQL;时间或日期的输入最好用TDateTimePicker控件
    代码应改为:
    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.paramByName('zh').AsString:=edit_zh;
    query1.paramByName('lxdh').AsString:=edit_dh.text;
    If  EaskEdit_sj.Date = 0 Then
    Begin
      query1.ParamByName('sj').DateType:=ftDateTime;
      Query1.ParamByName('sj').Clear; 
    End
    Else
      query1.paramByName('sj').Asdate:=strtodate(EaskEdit_sj.text);
    query1.ExecSQL;
      

  12.   

    补充以上说明:
    时间或日期的输入最好用TDateTimePicker控件
    代码应改为:
    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.paramByName('zh').AsString:=edit_zh;
    query1.paramByName('lxdh').AsString:=edit_dh.text;
    If  EaskEdit_sj.Date = 0 Then
    Begin
      query1.ParamByName('sj').DateType:=ftDateTime;
      Query1.ParamByName('sj').Clear; 
    End
    Else
    //  query1.paramByName('sj').Asdate:=StrToDate(EaskEdit_sj.Text);
      query1.paramByName('sj').Asdate:=EaskEdit_sj.Date;
    query1.ExecSQL;
      

  13.   

    to chinanet:query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.params[0].AsString:=edit_zh;
    query1.params[1].AsString:=edit_dh.text;
    if EaskEdit_sj.Text<>'' then  
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text)
    else
      query1.params[2].Asdate:=null;
    query1.ExecSQL;
    再试试看吧。
      

  14.   


    Query1.RequestLive:=TRUE;
    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.ExecSQL;
      

  15.   

    to :machin(刷新一下) 
    我说过了象 query1.params[2].Asdate:=null; 这句是不行的,delphi中不认识null,
    到DBMS里才认识nullto:ch2zh1(逍遥剑客) 
    不知道你的意思!to: zou5655(周围)
    你的方法很好,解决了问题!感谢!感谢
    (都是我基础知识不好的结果) 
    但我是这样做的(结合了前几位回复者的意见,也一并表示感谢)
    query1.Close;
    query1.SQL.Clear ;
    query1.SQL.Add('insert into tmp(zh,lxdh,sj)');
    query1.SQL.Add('values(:zh,:lxdh,:sj)');
    query1.params[0].AsString:=edit_zh;
    query1.params[1].AsString:=edit_dh.text;
    if EaskEdit_sj.Text<>'' then  
      query1.params[2].Asdate:=strtodate(EaskEdit_sj.text)
    else 
      begin
        query1.params[2].datatype:=ftdate;
        query1.params[2].clear;
      end;
    query1.ExecSQL;准备给分了再请问一下(继续加分),
    Try …… Except ……和if……else……有什么区别,我不知道Try …… Except ……的用法我在窗体上放一个label1和一个button1,
    在button1的onclick事件中写入
    label1.caption:=date;
    执行时,label1变成 01-06-20 
    我如何让它显示成 2001-06-20,这难道是delphi的千年虫?
      

  16.   

    if else 条件语句符合条件即执行
    Try …… Except 是在错误发生时才会去执行except语句
      

  17.   

    日期输出,两种方式都可以:
    Label1.Caption := FormatDateTime('YYYY-MM-DD',Date);
    Label1.Caption := FormatDateTime('YYYY"年"MM"月"DD"日"',Date);
    If 是条件语句,具体有以下几种:
    If ...
    If ... Else
    If .. Else If ..Else If ...  ...  ...  ... Else 
    结构化异常处理语句:
    Try ..Except ..End
    Try ..Finally .. End 
    具体操作,自己去看Delphi的Object Pascal语法. OK!!