with query do 
    begin 
     close;
     sql.Clear;
     sql.Add('select * from content.dbf ');
     sql.add('where sdate >= '+datetostr(dfirstdate));
     sql.add('and sdate<='+datetostr(dlastdate));
     open;
   end;

解决方案 »

  1.   

    既然sdate是日期型的又何必转化成字符型的,那肯定是不对的。
      

  2.   

    不要使用DateToStr(.dbf SQL不识别日期串),使用
    FormatDateTime('MM/DD/YYYY',dfirstdate)来转换;
      

  3.   

    每行sql语句之间应该有空格!
      

  4.   

    说明一下:
    DateToStr是按照你机器的配置来转换日期的.
    而本地SQL只识别 'MM/DD/YYYY'这种格式.
      

  5.   

    不转化为字符型 ,SQL语句就通不过,转化为字符型后,运行是产生类型不匹配错误,我用的是DBF表。
      

  6.   

    To borlandor(大民):
      我觉得不是如此,
    以前碰到此类问题,我一直用TQuery的Params加输入参数来解决的
    就没有问题!
      不知有和高见?
      

  7.   

    TQuery的Params[I]只能用'YYYY-MM-DD'这种格式赋值.
      

  8.   

    严格来说,TQuery的Params[I]只能用当前机器设置的格式来赋值. 
     
      

  9.   

    with query do 
        begin 
         close;
         sql.Clear;
         sql.Add('select * from content.dbf ');
         sql.add('where sdate between '''+formatdatetime('yyyy-mm-dd',dfirstdate)'''+' and '''+formatdatetime('yyyy-mm-dd',dlastdate)+'''');
         open;
       end;