怎样统计某个字段的合计? ( 积分: 50 )

  • 主题发起人 主题发起人 mycolour
  • 开始时间 开始时间
M

mycolour

Unregistered / Unconfirmed
GUEST, unregistred user!
除使用sql外,delphi是怎样统计某个字段的合计的?<br>sum?
 
你可以用循環呀<br>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;not&nbsp;adoquery1.eof&nbsp;do<br>&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum:=sum+adoquery1.FieldValues['字段'];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adoquery1.next;<br>&nbsp;&nbsp;&nbsp;end;
 
用第三方控件很好解决DBGIRD中没有统计显示的行的问题<br>你可以参考下使用DBGridEh,可以定制表格底部(footer)区域的汇总统计行。
 
哈哈,来迟了,上面两位的方法都可以实现的!用DBGrideh的话,比较省事!
 
楼上的几位提的都是可以实现的方法
 
用数据库来统计就OK了,看下面的代码:&nbsp;&nbsp;<br>&nbsp;&nbsp;query:=TADOquery.Create(self);<br>&nbsp;&nbsp;query.Connection:=frmbase.conDB;<br>&nbsp;&nbsp;query.Close;<br>&nbsp;&nbsp;query.SQL.Clear;<br>&nbsp;&nbsp;query.SQL.Text:='select&nbsp;count(*)&nbsp;as&nbsp;总数,sum(sqjc)&nbsp;as&nbsp;上结存,sum(bqjh)&nbsp;as&nbsp;本进货,sum(bqxs)&nbsp;as&nbsp;本销售,'+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'sum(bqth)&nbsp;as&nbsp;本退货,sum(bqjc)&nbsp;as&nbsp;本结存,sum(s)&nbsp;as&nbsp;s,sum(m)&nbsp;as&nbsp;m,sum(l)&nbsp;as&nbsp;l,sum(xl)&nbsp;as&nbsp;xl,sum(xxl)&nbsp;as&nbsp;xxl'+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;from&nbsp;jx_tab&nbsp;where&nbsp;uid='+inttostr(nodedata(tree1.Selected.Data).ID)&nbsp;;<br>&nbsp;&nbsp;query.Open;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;//合计保存<br>&nbsp;&nbsp;agsum[0]:='合计('+query.fieldbyname('总数').AsString+'种)';<br>&nbsp;&nbsp;agsum[1]:=query.fieldbyname('上结存').AsString;<br>&nbsp;&nbsp;agsum[2]:=query.fieldbyname('本进货').AsString;<br>&nbsp;&nbsp;agsum[3]:=query.fieldbyname('本销售').AsString;<br>&nbsp;&nbsp;agsum[4]:=query.fieldbyname('本退货').AsString;<br>&nbsp;&nbsp;agsum[5]:=query.fieldbyname('本结存').AsString;<br>&nbsp;&nbsp;agsum[6]:='';<br>&nbsp;&nbsp;agsum[7]:=query.fieldbyname('s').AsString;<br>&nbsp;&nbsp;agsum[8]:=query.fieldbyname('m').AsString;<br>&nbsp;&nbsp;agsum[9]:=query.fieldbyname('l').AsString;<br>&nbsp;&nbsp;agsum[10]:=query.fieldbyname('xl').AsString;<br>&nbsp;&nbsp;agsum[11]:=query.fieldbyname('xxl').AsString;
 
呵呵&nbsp;楼上的,搂住不是要这样的结果,而是想要明细和汇总在一起的,dbgrideh没有问题,省劲,用友还有种办法&nbsp;<br>select&nbsp;明细&nbsp;<br>union&nbsp;all<br>select&nbsp;sum(明细)<br>但是这种办法只适合浏览数据&nbsp;不适合修改数据&nbsp;&nbsp;因为union不允许修改结果集
 
如果你用的CLIENTDATASET就可以用CLIENTDATASET.SUM()函数做统计
 
后退
顶部