var 
      date1:DateTime;
      date1:=DateTimePicker1.date;
   while date1<=DateTimePicker2.date do
   begin
      //执行循环体
   end;
   inc(date1);
   以上为什么错了呢?有什么方法可以改正啊?哪几种?请教各位高手

解决方案 »

  1.   

    首先,程序中有死循环,对date1的增加值是在循环体外inc函数只能对有序类型操作,TDateTime不是有序类型date1的声明也不正确,应该是TDateTime
      

  2.   

    var 
          date1:TDateTime;
    begin
          date1:=DateTimePicker1.date;
       while date1<=DateTimePicker2.date do
       begin
          //执行循环体
         date1:=date1+1;
       end;
    end;
      

  3.   

    还有这条语句怎么改啊?
    ADOQuery1.SQL.Add('select sj from kq where rq=''DateTimePicker1.date''');
      

  4.   

    ADOQuery1.SQL.Add('select sj from kq where rq='+QuotedStr(DateTimeToStr(DateTimePicker1.Date)));
      

  5.   

    那你用参数吧
    ADOQuery1.SQL.Add('select sj from kq where rq=:rq');
    ADOQuery1.Parameters.ParamByName('rq').Value:=DateTimePicker1.Date;
      

  6.   

    Acess数据库好象日期型字段的查询是在字符串两边加#的
      

  7.   

    这个么,就要你自己去找错误了只能给你一些提示了:
    如果数据库中的日期时间型字段有时间部分的话,那这个查询可能合条件的很少注意一下DateTimePicker控件的Time属性,如果数据库中没有存时间部分的话,将它置为0别的么,想不起来了说了这么多,口都干了,先休息下吧
      

  8.   

    我将判断改成大于或等于了,也还不行啊?
    ADOQuery1.SQL.Add('select sj from kq where rq>=rq');
      

  9.   

    不过我给过具体的日期就对啦!你看下面:
    select * from kq where rq=#2003-1-1#
      

  10.   

    最后试一下
    var StrDate:string;strDate:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.DateTime));ADOQuery1.SQL.Add('select sj from kq where rq=#'+QuotedStr(StrDate))+'#';