数据库为paradox数据库,a_time为其中一个字段,类型为D,为什么下面语句无法执行啊,在SQL中都可以执行啊,var
    ss:string;
begin
    ss:='select * from cunkuanxinxi.db where a_time between '+datetostr(DateTimePicker1.date)+' and '+datetostr(DateTimePicker2.date);
    with dm.query7 do begin
        close;
        sql.clear;
        sql.Add(ss);
        showmessage(ss);
        open;
    end;

解决方案 »

  1.   

    var
        ss:string;
    begin
        ss:='select * from cunkuanxinxi.db where a_time between '''+datetostr(DateTimePicker1.date)+''' and '''+datetostr(DateTimePicker2.date)+'''';
        with dm.query7 do begin
            close;
            sql.clear;
            sql.Add(ss);
            showmessage(ss);
            open;
        end;
    注:你要在SQL 语句中加上界定符‘
      

  2.   

    var
        ss:string;
    begin
        ss:='select * from cunkuanxinxi.db where a_time between '+#39+datetostr(DateTimePicker1.date)+#39+' and '+#39+datetostr(DateTimePicker2.date)+#39+';
        with dm.query7 do begin
            close;
            sql.clear;
            sql.Add(ss);
            showmessage(ss);
            open;
        end;
    因为让某个字段在某一范围内时,这个变量必须用引号引起来,#39就代表''
      

  3.   

    var
        ss:string;
    begin
        ss:='select * from cunkuanxinxi.db where a_time between '+#39+datetostr(DateTimePicker1.date)+#39+' and '+#39+datetostr(DateTimePicker2.date)+#39+';
        with dm.query7 do begin
            close;
            sql.clear;
            sql.Add(ss);
            showmessage(ss);
            open;
        end;
    因为让某个字段在某一范围内时,这个变量必须用引号引起来,#39就代表''
      

  4.   

    出错提示是:type mismatch expression
      

  5.   

    试试:
    var
        ss:string;
    begin
        ss:='select * from cunkuanxinxi.db where a_time between :rq1  and :rq2';
        with dm.query7 do begin
            close;
            sql.clear;
            sql.Add(ss);
            sql.parambyname('rq1').value:=DateTimePicker1.date;
            sql.parambyname('rq2').value:=DateTimePicker2.date;
    //        showmessage(ss);
            open;
        end;
      

  6.   

    to:hongjg(阿谷) 
    可以是可以,但是如果要查询2003-3-25,(数据库中有2003-3-25的记录)时如果DateTimePicker1的时间选择为:2003-3-21日,DateTimePicker2的时间选择为:2003-3-26日,那么,记录为2003-3-25的记录就不会被查询出来,只有在你将DateTimePicker1或者DateTimePicker2的其中一个值选择为2003-3-25日的时候才会找到这条记录,我不明白这是什么原因啊!
      

  7.   

    昏!不清楚了。
    不过你不要用between了,用where (rq>=:rq1) and (rq<=:rq2)试试。反正我都是这样用的。