query1.close;
query1.sql.text:='DELETE FROM SBXSMX WHERE shrq=to_date(:rq,''yyyymmdd'')';
query1.ParamByName('rq').asstring :=formatdatetime('yyyymmdd',rq.date); 
query1.execsql;

解决方案 »

  1.   

    shrq是日期类型字段,必须用to_date转换要比较的字符成日期类型才可以比较
      

  2.   

    query1.sql.text:='DELETE FROM SBXSMX WHERE TO_CHAR(SHRQ,''YYYYMMDD'')=:RQ';
    query1.ParamByName('rq').asstring := formatdatetime('yyyymmdd',rq.date);
    query1.close;
    query1.ExecSQL;
    query1.Open;
      

  3.   

    query1.ParamByName('rq').asstring :=''''+formatdatetime('yyyymmdd',rq.date)+'''';
      

  4.   

    这不是问题关键,在SQL*PLUS里可以运行!
    DELETE FROM SBXSMX WHERE TO_CHAR(SHRQ,'YYYYMMDD')='20020612';

    DELETE FROM SBXSMX WHERE shrq=to_date('20020612','yyyymmdd');
    是一回事!
      

  5.   


    query1.ParamByName('rq').Value := formatdatetime('yyyymmdd',rq.date);