var    date1,date2:TDateTime;
……
    Date1 := EncodeDate(year, month, 1);
    Date2 := EncodeDate(year, month, 31);
    query.SQL.Add('select * from sxdj where sxsj between date1  and date2');
这样为什么不可以?
然后我试了一下这种
    query.SQL.Add('select * from sxdj where sxsj between :date1 and :date2);
    parameters.parambyname('date1).value:=EncodeDate(year, month, 1);
    parameters.parambyname('date2').value:=EncodeDate(year, month, 31);
error :object or class type required
           missing operator or semicolon求指点啊,谢谢谢谢

解决方案 »

  1.   

    'between '+QuotedStr(FormatDateTime('yyyy-mm-dd',date1))+ ' and '如果是access就不用QuotedStr了,要加上 # 修饰
      

  2.   

    parameters.parambyname('date1).value:=EncodeDate(year, month, 1);
      parameters.parambyname('date2').value:=EncodeDate(year, month, 31);
    EncodeDate(year, month, 1)改为datetimepicker1.datetime;
      

  3.   

    还是不行啊,提示date1 date2 的值没有使用。
      

  4.   

    自己看,access数据库
    procedure TForm3.TeButton1Click(Sender: TObject);
    var
      b,e:TDate;
    begin
      b:=DateTimePicker1.Date;
      e:=DateTimePicker2.Date;
      ADODataSet1.Close;
      ADODataSet1.CommandText := 'SELECT * FROM [表名] WHERE [日期] BETWEEN #'+DateToStr(B)+'# AND #'+DateToStr(E)+'# ORDER BY [日期]';
      ADODataSet1.Open;end;
      

  5.   

    把sql语句拿出来直接在数据库工具中执行下。有可能根本执行不过~