想在日期里找出一段时间的数据:
数据为:  TDate       price    number
         20060912     12          2
         20060913      9          1
         20060914      8          4
         20060915     45          1 
         20060916      9          6
         20060917     78          1
         20060918     45          7
       
      mystr:='200609';
       Query1.Close;
       Query1.SQL.Clear;       Query1.SQL.Add(' select * from bill.db where 1=1 ');
       Query1.SQL.Add('  TDate >=:  bill1  and  TDate <=:  bill2  ');
       Query1.parameter[bill1].Asstring:= mystr+'01';
       Query1.parameters[bill2].Asstring := mystr+'31';
       Query1.open;但是DBGrid没有任何显示
还有我想在上面的基础上再求个和
select sum(price*number)然后在edit4.Text里面显示出来
望高手们多多指教
在线等待

解决方案 »

  1.   

    Query1.SQL.Add('  TDate >=:  bill1  and  TDate <=:  bill2  ');
    Query1.params.paramsbyname('bill1').Asstring:= mystr+'01';
    query1.params.paramsbyname('bill2').Asstring := mystr+'31';
      

  2.   

    var
       p,n,sum:integer;
    ////////////////////////////////////////////////
    Query1.SQL.Add(' select * from bill.db where 1=1 and ');
    Query1.SQL.Add('  TDate >=:  bill1  and  TDate <=:  bill2  ');
    Query1.parameters[bill1].value:= mystr+'01';
    Query1.parameters[bill2].value:= mystr+'31';
    Query1.Open;
       if Query1.RecordCount>0 then
        begin
          Query1.First;
          sum=0;
          while not Query1.Eof do
             begin
               p:=Query1.FieldByName('price').Value;
               n:=Query1.FieldByName('number').Value;
               sum:=sum+p*n;
             end;
          Edit4.Text:=IntToStr(sum);
        end;
      

  3.   

    循环里面少了一句
    Query1.Next;
      

  4.   

    Undeclared identifier: 'paramsbyname'
     Missing operator or semicolon
     Undeclared identifier: 'parameters'
     Missing operator or semicolon师兄
    还是报错呀
      

  5.   

    Query1.SQL.Add(' select * from bill.db where 1=1 and ');
    Query1.SQL.Add('  TDate >='+ quotedstr(mystr+'01'));
    Query1.SQL.Add('  and  TDate <='+ quotedstr(mystr+'31'));