我在窗体中放了两个DateTimePicker控键DateTimePicker1和DateTimePicker2
让这两个控键点选的日期分别作为起始日期,和截止日期。点击button1控键后在DBGrid1显示在该时间段内入库的产品:
在button1的onclick事件中键入下面代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
  
   ADOQuery1.Filtered:=Not ADOQuery1.Filtered; 
end;
然后再在ADOQuery1的onfilterRecord事件中输入如下代码
  if (ADOQuery1.FieldByName('入库日期').AsDatetime >= datetimetostr(DateTimePicker1.datetime)) and
      (ADOQuery1.FieldByName('入库日期').AsDatetime <= datetimetostr(DateTimePicker2.datetime)) then
      accept:=true
  else
     accept:=false;end;可是运行还是有错,哪位高手测试成功后指点一下我好吗?感激不尽!!!

解决方案 »

  1.   

    if (ADOQuery1.FieldByName('入库日期').AsString between datetimetostr(DateTimePicker1.datetime)) and datetimetostr(DateTimePicker2.datetime)) then
          accept:=true
      else
         accept:=false;end;
      

  2.   

    if (ADOQuery1.FieldByName('入库日期').AsDatetime >= datetimetostr(DateTimePicker1.datetime)) and
    //日期不要转换成字符再比较
    if (ADOQuery1.FieldByName('入库日期').AsDatetime >= DateTimePicker1.datetime) and
      

  3.   

    if (ADOQuery1.FieldByName('入库日期').AsDatetime >= DateTimePicker1.datetime) and
          (ADOQuery1.FieldByName('入库日期').AsDatetime <= DateTimePicker2.datetime) then
          accept:=true
      else
         accept:=false;
      

  4.   

    if (ADOQuery1.FieldByName('入库日期').AsDatetime >= DateTimePicker1.datetime) and
          (ADOQuery1.FieldByName('入库日期').AsDatetime <= DateTimePicker2.datetime) then
          accept:=true
      else
         accept:=false;end;
      

  5.   

    对了,不好意思
    可能是我的if语句里面有点问题
    因为我在ADOQuery1的onfilterRecord事件中要实现的是两个查询
    一个是两个数值范围内的数据查询,而另一个就是我现在要问的两个时间段内的数据查询
    所以我的代码是:
    procedure TForm1.ADOQuery1FilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    begin
       if (ADOQuery1.FieldByName('入库数量').AsInteger >= strtoint(edit1.Text)) and
          (ADOQuery1.FieldByName('入库数量').AsInteger <= strtoint(edit2.Text)) then
          accept:=true
         else
         accept:=false;//上面这些代码实现的是两个数据范围内的数据查询
         if (ADOQuery1.FieldByName('入库日期').AsDatetime >=DateTimePicker1.DateTime) and
          (ADOQuery1.FieldByName('入库日期').AsDatetime <= DateTimePicker2.datetime) then
          accept:=true
         else
         accept:=false; end;
    大家看看这样写是否有错?错哪里了?