我的程序是这样的:
 procedure TF_main.Button1Click(Sender: TObject);
var
   start,over:tdatetime;
   begin
   start:=DateTimePicker1.Datetime;
   over:=DateTimePicker2.Datetime;
   with adoquery1 do
   begin
    close;
    sql.Text:='select * from sjb where jrsjzd between   start and over  ';
    open;
   end;
 end;
请问为什么结果总是错,提示START没有初始化.急.....
怎样才能正确呢?

解决方案 »

  1.   

    procedure TF_main.Button1Click(Sender: TObject);
    begin
       with adoquery1 do
       begin
        close;
        sql.clear;
        sql.Text:='select * from sjb where jrsjzd between :start and :over ';
        Parameters.ParambyName('start').AsDateTime:=DateTimePicker1.Datetime;
        Parameters.ParambyName('over').AsDateTime:=DateTimePicker2.Datetime;
        open;
       end;
     end;
      

  2.   

    begin
      with adoquery1 do
           begin
           close;
           sql.clear;
           sql.Text:='select * from lstz where rq between :start1 and :over1';
           Parameters.ParambyName('start1').value:=DateTimePicker1.Date;
           Parameters.ParambyName('over1').value:=DateTimePicker2.Date;
           open;
           end;
    end;
    我试过了.OK!
      

  3.   

    Access 里面的日期要加上"#" 比如: select * form 表A where 时间 < #2004-12-6#如果有时间的话,时间的分隔符应打上两个 "::"比如: select * form 表A where 时间 < #2004-12-6 18::26::10#
      

  4.   

    在sql server里用'DT',在Access 里用#DT#
      

  5.   

    sql.Text:='select * from sjb where jrsjzd between   start and over  ';
    //////////////////////////////////////都写错了,晕,参数根本就没传进去!