本文整理自网络,侵删。
DBGridEh 的分组统计 DataGrouping。有一个表,三个字段:
XuHao, ShuLiang, GuiGe
要根据 GuiGe 分类统计 ShuLiang.
通常用 DBGridEh 是这样的:
DBGridEh1.DataSource := DataSource1;DataSource1.DataSet := ClientDataSet1;
如果要做分类统计的话,需要这样:
DGBridEh1.DataSource := DataSource2;DataSource2.DataSet := MemTableEh1;MemTableEh1.DataDriver := DataSetDriverEh1;DataSetDriverEh1.ProviderDataSet := ClientDataSet1;
也就是说,如果要分组统计,必须让 DGBridEh 从 MemTableEh 获得数据来显示。
然后,设置好 DGBridEh.DataGrouping 这个属性就好了。全部可以在设计期搞定,无需代码。
以下描述,都是在设计期,在 Object Inspector 里面,针对 DbGridEh1 的 DataGrouping 属性,拉开后,设置里面的属性:
1. Active - True;2. GroupPanelVisible - True; 注意如果只设置这两项,则运行时,它会显示一个 Panel 在 DBGrid 的顶上,并有英文提示,拖一个字段到这里,它会自动根据这个字段进行分组显示。3. GroupLevels 点开,在弹出来的窗口里面,增加一条,类似增加一个字段一样的操作。3.1. 在增加的这一条的属性里面,选择 ColumnName,下拉开,如果 DBGridEh1 已经在设计期加了静态字段,这里就会看到几个字段,挑选需要用来作为分组依据的字段。DBGridEh1 将会用这个字段来进行分组。4. 分组统计:Footers 点开,弹出一个窗口,类似字段编辑器。增加一条。4.1. 选中增加的一条,属性里面选择 ColumnItems,会弹出窗口,窗口里面是前述的三个字段(必须是设计期已经为 DBGridEh1 增加了静态字段)。4.2. 选择 ShuLiang 字段,属性里面的 ValueType 下拉选择 gfvSumEh。就会在分组的 Footer 里面显示这一组的合计数字(小计)。5. DefaultStateExpanded - True 表格会加载后自动展开。否则加载后,是收缩的,只显示组,不显示组里面的记录。
------------------------
另外一个办法,是使用 ClientDataSet 的 Aggregates 字段来分组统计,然后用 DBGridEh 来显示。使用 Aggregates 的方法:
http://edn.embarcadero.com/article/29272
使用 ClientDataSet 的 Aggregates 来分组统计,也可以用 DBGrid 来显示。但使用 DBGrid 来显示,它会在每一行重复显示相同的分组统计数字,不好看。
如果用 DBGridEh 来显示,则可以用以下代码:
with DBGridEh2 do begin for i := 0 to FieldCount -1 do begin if (Columns[i].FieldName = 'GuiGe') or (Columns[i].FieldName = 'HeJi') then Columns[i].HideDuplicates := True; end; end; 上述代码,对于规格字段和分组统计的合计字段,相同数字的,就不重复显示。这样更好看。――――――――――――――――原文链接:https://blog.csdn.net/pcplayer/article/details/69240523
相关阅读 >>
Delphi 为当前窗口客户区捉图: getformimage
Delphi getmem(mystring,1024);//开辟1024个字节freemem(mystring,1024);//释放
Delphi twebbrowser与嵌入youtube视频崩溃
更多相关阅读请进入《Delphi》频道 >>