query1.SQL.Add('where 入库时间<=:Start and 入库时间>=:End');
query1.Params[0].AsDateTime := StrToDateTime(Edit1.Text);
query2.Params[1].AsDateTime := StrToDateTime(Edit2.Text);
...

解决方案 »

  1.   

    edit2.text 它的类型是字符串类型
      

  2.   

    query1.SQL.Add('where 入库时间<=:Start and 入库时间>=:End');
    query1.Params[0].AsDateTime := StrToDateTime(Edit1.Text);
    query1.Params[1].AsDateTime := StrToDateTime(Edit2.Text);
      

  3.   

    急急?????????
    我把代码改为此还不行啊?
    query1.SQL.Add('select 入库时间,sum(入库重量)');
    query1.SQL.Add('from 代存原粮入库单');
    query1.SQL.Add('where 入库时间<=:edit3.text and 入库时间 >=:edit2.text');
    query1.Params[0].AsDateTime := StrToDateTime(Edit3.Text);
    query1.Params[1].AsDateTime := StrToDateTime(Edit2.Text);
    query1.Prepare;
     query1.Open;
      

  4.   

    第一句改为query1.sql.add('select 入库时间,sum(入库重量) as 重量总和');Edit1.text:=query1.fieldbyname('重量总和').asinteger;
    看看行不行
      

  5.   

    query1.SQL.Add('where 入库时间<=:edit3.text and 入库时间 >=:edit2.text');
    不对啊,你怎么不改
      

  6.   

    上面说的对呀!
    你改了吗?如果不好使,在sql里执行一下sql语句!
      

  7.   

    其实,您的做法开始就错了,对于要求和的字段,是不能那样写的
    有下面两种方法供您参考:
    select 入库时间,sum(重量总和) from 代存原粮入库单 where 
    入库时间>'02/22/2002' and 入库时间<'05/25/2002' group by 入库时间select 入库时间,sum(重量总和) from 代存原粮入库单 where 
    入库时间 in (select 入库时间 from 代存原粮入库单 where 入库时间>'02/22/2002' and 入库时间<'05/25/2002' )在实际使用中,把"入库时间<'05/25/2002'"换成您想使用的时间就可以了,注意的是,时间的格式最好使用字符 月/日/年 的格式
      

  8.   

    改了可说此行有错啊:
    Edit1.text:=query1.fieldbyname('重量总和').asinteger;
    错误是:incompatible types:'string'and 'integer'
      

  9.   

    建议改成如下,如果你的入库时间字段是SMALLDATETIME,就必须使用转换:
    query1.close;
    query1.sql.clear;
    query1.SQL.Add('select convert(varchar,入库时间,2) as 入库时间,sum(入库重量) as 总和');
    query1.SQL.Add('from 代存原粮入库单');
    query1.SQL.Add('where 
     datediff(day,入库时间,:frm)<=0  
    and datediff(day,入库时间,:TO)>=0  
     group by convert(varchar,入库时间,2) ');
    query1.parambyname('frm').asdatetime:=strtodatetime(edit2.text);
    query1.parambyname('to').asdatetime:=strtodatetime(edit3.text);
     query1.Prepare;
     query1.Open;
    edit1.text:=query1.fieldbyname('总和').asstring;
      

  10.   

    按这样该改:
    第一句改为query1.sql.add('select 入库时间,sum(入库重量) as 重量总和');Edit1.text:=query1.fieldbyname('重量总和').asinteger;
    看看行不行
    可说错误是:
    改了可说错误是没:
    重量总和字段啊
      

  11.   

    query1.SQL.Add('select 入库时间,sum(入库重量)');
    query1.SQL.Add('from 代存原粮入库单');
    query1.SQL.Add('where 入库时间<=:start and 入库时间 >=:end');
    query1.Params[0].AsDateTime := StrToDateTime(Edit3.Text);
    query1.Params[1].AsDateTime := StrToDateTime(Edit2.Text);
    query1.Prepare;
     query1.Open;
    //start end是参数
      

  12.   

    以下代码完成在指定时段内的按日期分类统计。不明白的是为什么要按日期统计?一段时间内每天的汇总?这也要求在输入数据时保证只包括日期,不包括时间!With Query1 do 
    begin
         Close;
         SQL.Clear;
         SQL.Add('Select 入库时间,sum(入库重量)');
         SQL.Add('From 代存原粮入库单');
         SQL.Add('Where 入库时间 between :StartDate and :EndDate');
         SQL.Add('Group by 入库时间');
         SQL.Add('Order by 入库时间');
         ParamByName('StartDate').asDateTime:=StrToDateTime(Edit2.Text);
         ParamByName('EndDate').asDateTime:=StrToDateTime(Edit3.Text);
         Open;
    end;
      

  13.   

    我觉的时间比较用DATADIFF函数比较好,而且能从年比较到毫秒
    select acutalamount as SAC from Demotable
    where datediff(day,startdatetime,enddatetime)>=30汇总一个月的某个列值
      

  14.   

    你要不要试试下面的代码?begin
    query1.close;
    query1.sql.clear;
    query1.SQL.Add('select sum(入库重量) ');
    query1.SQL.Add('from 代存原粮入库单 ');
    query1.SQL.Add('where 入库时间<='''+edit3.text+''' and 入库时间>='''+edit2.text+'''');
    showmessage(query1.sql.text);//在这里检查一下是不是你所需要的SQL语句
    query1.Prepare;
    query1.Open;if query1.recordcount=0 then exit;
    edit1.text:=query1.fields[0].asstring;
    end;注意各个空格!
      

  15.   

    请看
    我不明白???
    ?????????我这样改后:
    query1.close;
    query1.sql.clear;
    query1.sql.add('select sun(入库重量) from table where 入库日期 between :da1 and :da2');
    query1.parabyname('da1').asdatetime:=StrtoDatetime(edit1.text);
    query1.parabyname('da2').asdatetime:=StrtoDatetime(edit2.text);
    query1.open;
    Edit3.text:=formatfloat('0.00',query1.fields[0].AsFloat);
    编辑能通过
    可在edit1和edit2中输入2002-2-4和2002-5-3后按button后
    出来错误是:invalid use of keyword
      

  16.   

    xyxx
    你的QQ能说出来
    我和你交流吗我的QQ81676032