procedure TForm5.BitBtn1Click(Sender: TObject);
var q:TQuery;
    s1,s2:string;  //起止时间
    d1,d2:double;    //起止时间
begin
   //得到用户选择的起止时间
  s1:=combobox1.Text+combobox2.Text+combobox3.Text;
  s2:=combobox4.Text+combobox5.Text+combobox6.Text;
  d1:=strtodate(s1);
  d2:=strtodate(s2);  if form1.RadioButton1.Checked=True then      //查询固定件
   begin
     form1.Query2.SQL.Clear;
     form1.Query2.SQL.Add('select * from 出件登记表 where 日期>:d1 and 日期<:d2');
     form1.Query2.Open;     //统计所有的记录条数
  q:=TQuery.Create(nil);
  q.DatabaseName:='hm';
  q.SQL.Clear;
  q.SQL.Add('select count(*) as Row_count from 出件登记表 where 日期>:d1 and 日期<:d2');
  q.Open;
  form1.edit7.Text:=q.fieldbyname('Row_count').AsString;  //统计所有记录的总金额
  q.SQL.Clear;
  q.SQL.Add('select sum(总金额) as Row_count from 出件登记表 where 日期>:d1 and 日期<:d2');
  q.Open;
  form1.edit8.Text:=q.fieldbyname('Row_count').AsString;
  q.Free;
   end
  else    //查询活动件
   begin
     form1.query2.SQL.Clear;
    form1.query2.SQL.Add('select * from 活动件登记表 where 日期>:d1 and 日期<:d2');
    form1.query2.Open;  //统计所有的记录条数
    q:=TQuery.Create(nil);
    q.DatabaseName:='hm';
    q.SQL.Clear;
    q.SQL.Add('select count(*) as Row_count from 活动件登记表 where 日期>:d1 and 日期<:d2');
    q.Open;
    form1.edit7.Text:=q.fieldbyname('Row_count').AsString;  //统计所有记录的总金额
    q.SQL.Clear;
    q.SQL.Add('select sum(总金额) as Row_count from 活动件登记表 where 日期>:d1 and 日期<:d2');
    q.Open;
    form1.edit8.Text:=q.fieldbyname('Row_count').AsString;
    q.Free;
   end;
   form5.Close;
end;运行时显示如下错误:  ‘200511’is not a valid date

解决方案 »

  1.   

    s1:=combobox1.Text+combobox2.Text+combobox3.Text;
      s2:=combobox4.Text+combobox5.Text+combobox6.Text;
      d1:=strtodate(s1);
      d2:=strtodate(s2);--------------改为
    d1:=Encodedate(Strtoint(combobox1.Text),Strtoint(combobox2.Text),Strtoint(combobox3.Text));
    d2:=Encodedate(Strtoint(combobox4.Text),Strtoint(combobox5.Text),Strtoint(combobox6.Text));
      

  2.   

    d1:=strtodate(s1);
    d2:=strtodate(s2);这两句把STRING变成日期会有问题,如果没猜错combobox1.Text+combobox2.Text+combobox3.Text是年+月+日,这样日期格式就不对。S1:=combobox1.Text+'-'+combobox2.Text+'-'+combobox3.Text;在写SQL语句时候,其d1和d2没有定义。ParamByName('d1').Asdatetime:=d1;
      

  3.   

    我按照  jinjazz(近身剪(N-P攻略))  改了过后运行时却显示:
          invald argument to date encode 错误呀
      

  4.   

    s1:=combobox1.Text+'-'+combobox2.Text+'-'+combobox3.Text;
      s2:=combobox4.Text+'-'+combobox5.Text+'-'+combobox6.Text;
    去掉  d1:=strtodate(s1);
    去掉  d2:=strtodate(s2); 
    直接用s1,s2  试试看
      

  5.   

    where 日期 between #:d1# and #:d2#
    看下行不行
      

  6.   

    改成 where 日期 between #:d1# and #:d2#  还是不行呀一样的
    invald argument to date encode 错误呀错误提示