procedure TForm1.Button1Click(Sender: TObject);
var
t1,t2: string;
begin
   t1:=DateTimePicker1.Date;
   t2:=DateTimePicker2.Date;
   with adoquery1 do
   begin
     close;
     sql.Clear;
     sql.Add('select * from abc where date between '+t1+' and '+t2);
     
     open;
   end;
end;
双击没有反映,请问会是怎么回事?
后来改成下面样子也是一样的:
procedure TForm1.Button1Click(Sender: TObject);begin   with adoquery1 do
   begin
     close;
     sql.Clear;
     sql.Add('select * from abc where date>:a');
     Parameters.ParamByName('a').value := DateTimePicker1.Date;
     open;
   end;
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    t1,t2: string;
    begin
       t1:=DateTimePicker1.Date;
       t2:=DateTimePicker2.Date;
       with adoquery1 do
       begin
         close;
         sql.Clear;
         sql.Add('select * from abc where date between #'+t1+'# and #'+t2+'#');  //查詢日期型字段是要加#號的.
         
         open;
       end;
    end;
      

  2.   

    还是出错:#附近有语法错误 
    还有t1:=DateTimePicker1.Date忘记加datetostr了
      

  3.   

    sql.Add('select * from abc where date between '+QuotedStr(t1)+' and '+QuotedStr(t2));
      

  4.   

    第二种用法,在open前执行Prepared := True;