不用sql.如何计算一列的数直?没分了...:( (10分)

  • 主题发起人 主题发起人 why_119
  • 开始时间 开始时间
W

why_119

Unregistered / Unconfirmed
GUEST, unregistred user!
不用sql.如何计算一列的数直?
没分了...如
1
2
3
等于6...
 
用循环来做
table1.first;
while not table1.eof do
begin
...
table1.next;
end

 
同意楼上用循环来做的说法:
table1.first;
while not table1.eof do
begin
...
value := value + table.fieldbyName('fieldname').asInteger;// 后面是你所要的类型
table1.next;
end
 
也只能用這種方法了
 
同意楼上,如果这个value经常用,不妨另建一个表,记录value的值,每次append,insert将
value:=value + table1.fieldbyName('fieldname').asInteger;
用的时候直接取出来就可以了
 
这种方法行吗?
DBGrid1.Columns[0]
 
用sql如何写.有条件的sql..
 
select sum(field) from tabname where 条件
 
使用Dbgrideh控件,它有合计功能。
 
Dbgrideh是什么控件?
 
select sum(field) from tabname where 条件
****************
我试一下了...
 
with QryTemp do //用一个临时的Query来计算
begin
close;
sql.Clear;
sql.Add('select sum(数量) from d_pen where 销售专员=:s_r');
Parameters.ParamByName('s_r').Value:=listbox2.Items.Strings;
open;
if Fields[0].Value>0 then edit1.text:=inttostr(Fields[0].Value);
close;
end;

想用控件的话,很多都有这样的合计的。如,EHLIB,dxDBGrid,。。。。。
 
procedure Tf_stat.ListBox2Click(Sender: TObject);
var s,i,j:integer;
begin
for i:=0 to (listbox2.Items.Count-1) do //行
begin
if listbox2.Selected then //选中那行了?
begin
f_stat.ADOQuery1.Active:=false;
f_stat.ADOQuery1.SQL.Clear;
f_stat.ADOQuery1.SQL.Add('select 销售日期,销售专员,数量,产品名称,销售价格 from d_pen where 销售专员=:s_r');
f_stat.ADOQuery1.Parameters.ParamByName('s_r').Value:=listbox2.Items.Strings;//选中的行
f_stat.ADOQuery1.ExecSQL;
f_stat.ADOQuery1.Active:=true;
Label2.Caption:=listbox2.Items.Strings;//显示list中的名字
with f_stat.ADOQuery1 do
begin
first; //第一条
while not Eof do //最后
begin
j :=j+ dbgrid1.Fields[2].AsInteger;//加
s :=s+ dbgrid1.Fields[4].AsInteger;//加
next; //下一条
end;
Label4.Caption:=intTOstr(j); //结果
Label6.Caption:=intTOstr(s); //结果
end; //加...完
with DBGrid1 do
begin
Columns[0].Width:=80; //日期
Columns[1].Width:=65; //人员
Columns[2].Width:=65; //数量
Columns[3].Width:=115; //名称
Columns[4].Width:=65; //零售价格
end;
end;
end;
end;
完成!
谢谢大家.....
 
后退
顶部