字段值求和的问题(3分)

  • 主题发起人 主题发起人 eighteenzl
  • 开始时间 开始时间
E

eighteenzl

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TFrm_bas_Tool.Button1Click(Sender: TObject);
var j,i:integer;

begin
inherited;
ADOQry_Tmp.Close;
ADOQry_Tmp.sql.clear;
ADOQry_Tmp.SQL.Text:='select 中方人员 as ss from 员工基础信息表';
ADOQry_Tmp.open;
StatusBar1.Panels[0].Text:='中方人员个数的总和为: '+ ADOQry_Tmp.Fieldbyname('SS').Value;
if ADOQry_tmp.RecordCount>0 then
begin
i:=0;
for i:= 0 to ADOQry_Tmp.recordCount-1 do
begin
j:=j+i;
i:=i+ strToint(ADOQry_Tmp.Fieldbyname('中方人员').Value);
ADOQry_Tmp.Next;
end;
end;

StatusBar1.Panels[0].Text:='中方人员个数的总和为: '+intTostr(j);
end;
[Error] Unit_bas_tool.pas(223): Assignment to FOR-Loop variable 'i'提示的是这个错误,请高手们帮忙看看那里出了错,..这是一个字段值求和的语句,
那位有更加简单的聪明的代码发来分享一下,谢谢,
 
ADOQry_Tmp.Close;
ADOQry_Tmp.sql.clear;
ADOQry_Tmp.SQL.Text:='select sum(中方人员) as ss from 员工基础信息表';
ADOQry_Tmp.open;
if ADOQry_tmp.RecordCount>0 then
StatusBar1.Panels[0].Text:='中方人员个数的总和为: '+ ADOQry_Tmp.Fieldbyname('ss).Value
 
那个求出来的只是字段的个数总和,我要求的是字段值的总各,
打个比方是. 味精 是一个字段, 我要求这一个月味精一共买了多少包, 因为有些时候是批发的,可能一次买好几十包,而不是一包一包的出单的,所以......
 
ADOQry_Tmp.SQL.Text:='select sum(中方人员) as 总人数 from 员工基础信息表';
ADOQry_Tmp.Close;
ADOQry_Tmp.open;
showmeesage(ADOQry_Tmp.fieldbyname('总人数').value);
 
第一,以下两行语句颠倒了:
j:=j+i;
i:=i+ strToint(ADOQry_Tmp.Fieldbyname('中方人员').Value);
第二,这里不要用i:=i+...,因为循环变量就是i
 
不就一个SUM吗?
 
>>来自:eighteenzl, 时间:2006-6-19 2:58:23, ID:3474614
>>那个求出来的只是字段的个数总和,我要求的是字段值的总各,
>>打个比方是. 味精 是一个字段, 我要求这一个月味精一共买了多少包, 因为有些时候>>是批发的,可能一次买好几十包,而不是一包一包的出单的,所以......
晕,你试过没?SUM是求总和,COUNT是求记录数。我的没错,
比如你现在有这样一个表
味精表
单号 包数
1 10
2 30
3 5

select sum(包数) as 总和 from 味精
用Query调用这句后,返回的记录集只有一行!且只有一个字段,叫总和,字段值是45

select count(包数) as 记录条数 from 味精
用Query调用这句后,返回的记录集只有一行,且只有一个字段叫“记录条数”,且字段值是3
 
同意楼上,楼主的问题用sum最简单了
 
同意楼上,用sum求和,用count求记录数
 

Similar threads

后退
顶部