如何用FastReport打印分组统计的报表?

feng93017 2003-08-20 04:12:50
需求描述:
用户可按照不同的条件分组统计数据,比如:按照 订单、班组、机台、日期分组查询可以得到如下数据
订单 班组 机台 日期 产品数量
S0308 C001 M001 20030820 1000
S0307 C001 M001 20030820 500
按照 班组、机台、日期分组查询可以得到如下数据
班组 机台 日期 产品数量
C001 M001 20030820 1500

用户可以按照任何组合条件分组统计数据。如何让FastReport灵活打印各种组合统计出来的数据呢?
PS:本人对报表不是很熟悉,希望能详细描述,解决问题要简单实用。要分随便提。

问题描述:由于字段是变化的,我把所有的字段都对应了Memo(Designer中的)。当我打印数据时提示:“Undefined symbol "CDSRESULT."****"".”由于没有根据该字段统计当然找不到啦 :)。
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tccb 2003-08-26
  • 打赏
  • 举报
回复
fastreport安装目录demos\reports下有例子。。。
esunhong 2003-08-26
  • 打赏
  • 举报
回复
分组的打件要将班组,机台,日期都加上
[Tablem."班组"][Tablem."机台"][Tablem."日期"]
火龙岛主 2003-08-26
  • 打赏
  • 举报
回复
使用 frPrintTable,frPrintGrid!
steel1991 2003-08-21
  • 打赏
  • 举报
回复
数据集打开后,动态创建报表格式,然后再showreport
IwantFlay 2003-08-20
  • 打赏
  • 举报
回复
兄弟,你试试这个
( frReport.pages[1].fandObject(分组的名字) as TfrBandView).condition:=
'数据源."字段"';
IwantFlay 2003-08-20
  • 打赏
  • 举报
回复
希望还有高手帮你忙吧.

关注.....
IwantFlay 2003-08-20
  • 打赏
  • 举报
回复
具体我也不是很清楚.
但是我想你在showreport之前, 如果能对你的报表文件中的那个分组变量,就是TfrbandView变量重赋condition属性的话,就能做到你要的效果了.
我只用过在打印报表之前对报表变量重新赋值,但这个没有试过.
第一章 设计 7 1.1、控制键 8 1.2、鼠标操作 9 1.3、工具栏 10 1.3.1、设计模式工具栏 10 1.3.2、“标准”工具栏 10 1.3.3、“文本”工具栏 11 1.3.4、“边框”工具栏 12 1.3.5、“对齐”工具栏 12 1.4、设计选项 13 1.5、报表设置 15 1.6 页面设置 16 第二章 创建报表 19 2.1、报表对象 20 2.2、“世界,你好!”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表”报表 27 2.10、通过text组件显示数据表字段 29 2.11别名 30 2.12、变量。 30 2.13、“Picture”控件 32 2.14、图形报表 33 2.15、多行文本显示 34 2.16、文本拆分 36 2.17、组件的Wrap 37 2.18、显示数据表中的数据 38 2.19、标签式打印 40 2.20、子bands 42 2.21、组件的移动 43 2.22、两个数据阶的报表(主—细) 43 2.23、页首和页尾数据Band 46 2.24、多页报表 47 第三章 分组集合体 50 3.1、分组打印 51 3.2、其他分组特性 53 3.3页码的重设 55 3.4、组的操作 55 3.5、行数 56 3.6、函数集 57 3.7、页和报表统计 60 3.8、插入汇总函数 61 第四章 格式化、加强 62 4.1、格式化输出结果 63 4.2、内嵌格式化 63 4.3、条件显示 65 4.4、分行显示数据行的颜色 66 第五章 嵌套报表 68 5.1嵌套报表 69 5.2、设计子报表 69 5.3、子报表中的限制 69 5.4、PrintOnParent选项 70 第六章 脚本 72 6.1、体验脚本语言 73 6.2、脚本结构 76 6.3、“世界你好!”脚本 78 6.4、脚本中组件对象的使用 79 6.5、调用报表变量列表中的变量。 79 6.6、调用数据表子段 80 6.7、脚本中调用汇总函数 80 6.8、报表中变量值的显示 80 6.9、事件 81 6.10、一个使用“OnBeforePrint”事件的例子 82 6.11、在组头打印组的汇总信息 84 6.12、“OnAfterData”事件 88 6.13、Service组件 89 6.13.1、Report组件 89 6.13.2、Engine组件 90 6.13.3、“OutLine”组件 91 6.13.4、引擎组件的使用 91 6.15 Anchors 94 6.16 “Outline” 组件的使用方法 96 6.17 “OnManualBuild” 页面事件 98 6.18 脚本中的组件的建立 104 第七章 交叉报表 106 7.1、创建交叉报表 108 7.2、改变显示 110 7.3、使用函数 112 7.4、对结果进行排序 112 7.5、组合标题的表格 113 7.6、调整单元格的宽度 115 7.7、字体颜色和突出显示 117 7.8、使用脚本语言管理组件 118 7.9、调整行和列的大小 123 7.10、手动填充表格单元 124 7.11、在表格单元中加入其他组件 126 7.12、一些有用的设置 129 第八章 制图表 132 8.1、chart数据中数字的限制 137 8.2、设置 137 8.3、指定数字制表 138 8.4、利用脚本进行制表 139 8.5、在delphi环境中创建的报表打印 139 第九章 点阵报表 140 9.1、点阵报表使用交叉报表 144 9.2、点阵报表打印 145 9.3、命令组件 146 第十章 对话框窗体 147 10.1、控件 148 10.2、“世界你好!”报表 149 10.3、输入参数,并传递到报表中 150 10.4、组件的交互 150 10.5、多个对话框表单 151 10.6、对话框窗体的管理 152 第十一章 数据访问组件 155 11.1、组件的描述 156 11.1.1、TfrxDBLookupCombobox组件 157 11.1.2、TfrxADOTable组件 157 11.1.3、TfrxAdoQuery组件 159 11.1.4、TfrxADODatabase组件 161 11.2、创建报表 161 11.3、简单的列表式报表 162 11.4、参数查询报表 163 11.5、其他可用配置 164 第十二章 报表的继承性 166 12.1、创建报表 167 1
:首先是要分组,因为如果不分组,想合并的列与其它列会自动打印。这样,只能使用FR自带的隐藏重复数据的功能,但很多类似报表都是要求合并行居中的,这点FR就不能自动实现了。 2:要全并的列放在分组脚中,其它放在分组数据BAND中,这样,打印分组数据BAND后,动态改变分组脚中要合并列的TOP和HEIGHT就可以了。而且这样打印,因为要合并的行实际上只打印了一遍,因此应该效率更高。所以这就需要在打印分组数据BAND后有一个可记录此分组打印高度的功能。 3:代码解释 procedure MCOnAfterData(Sender: TfrxComponent); begin if =1 then MC.Tag:=Int(MC.Height) else MC.Tag:=MC.Tag+Int(MC.Height); end; 因为FR的在每次分组后重新计数,使用MC.Tag保存现在数据BAND上的所有不合并行的总高度。当然也可以使用一个变量,但放着这么多TAG不用,多浪费呀。况且使用TAG的语法也比使用变量简单,使用变量使程序看上去很难懂。 if >=1 then 这样的写法看起来多痛苦呀。 procedure MBBOnAfterData(Sender: TfrxComponent); begin MBB.Tag:=GetStandHeight(MBB.CalcHeight); //这一句是为了保持行高的一致性,如果不需要直接 MBB.Tag:=MBB.CalcHeight; //这样可能计算的行高不是标准行高的整数倍。 MBB.Visible:=False; end; procedure MD1OnBeforePrint(Sender: TfrxComponent); begin if =1 then MBB.Visible:=True; end; 上二句只是为了不多次统计CalcHeight,但不能直接设可视性为假,否则不会触发MBBOnAfterData事件。 计算此例中可能会很高的列的计算高度,这是在宽度已经确定的情况下计算的。 因为此例中的第二列单行高度可能大于其它列的总高度。如果没有此例中的特殊情况,可以省略。 4:如果此例中没有第二列单行高度可能大于其它列的总高度的话,MBB是不需要的。 5:如果不是要求空行为多行多列显示的话,GFOnBeforePrint也是不需要的,只需要在GF上放二个MEMOVIEW,宽高和左边距分别与上方的二个相同,调用我例子中注释掉的代码改变它们的TOP和HEIGHT即可。 6:TAG是所有Tcomponent的属性呀,这是我最常使用的一个属性。
第一章 设计 7 1.1、控制键 8 1.2、鼠标操作 9 1.3、工具栏 10 1.3.1、设计模式工具栏 10 1.3.2、“标准”工具栏 10 1.3.3、“文本”工具栏 11 1.3.4、“边框”工具栏 12 1.3.5、“对齐”工具栏 12 1.4、设计选项 13 1.5、报表设置 15 1.6 页面设置 16 第二章 创建报表 19 2.1、报表对象 20 2.2、“世界,你好!”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表”报表 27 2.10、通过text组件显示数据表字段 29 2.11别名 30 2.12、变量。 30 2.13、“Picture”控件 32 2.14、图形报表 33 2.15、多行文本显示 34 2.16、文本拆分 36 2.17、组件的Wrap 37 2.18、显示数据表中的数据 38 2.19、标签式打印 40 2.20、子bands 42 2.21、组件的移动 43 2.22、两个数据阶的报表(主—细) 43 2.23、页首和页尾数据Band 46 2.24、多页报表 47 第三章 分组集合体 50 3.1、分组打印 51 3.2、其他分组特性 53 3.3页码的重设 55 3.4、组的操作 55 3.5、行数 56 3.6、函数集 57 3.7、页和报表统计 60 3.8、插入汇总函数 61 第四章 格式化、加强 62 4.1、格式化输出结果 63 4.2、内嵌格式化 63 4.3、条件显示 65 4.4、分行显示数据行的颜色 66 第五章 嵌套报表 68 5.1嵌套报表 69 5.2、设计子报表 69 5.3、子报表中的限制 69 5.4、PrintOnParent选项 70 第六章 脚本 72 6.1、体验脚本语言 73 6.2、脚本结构 76 6.3、“世界你好!”脚本 78 6.4、脚本中组件对象的使用 79 6.5、调用报表变量列表中的变量。 79 6.6、调用数据表子段 80 6.7、脚本中调用汇总函数 80 6.8、报表中变量值的显示 80 6.9、事件 81 6.10、一个使用“OnBeforePrint”事件的例子 82 6.11、在组头打印组的汇总信息 84 6.12、“OnAfterData”事件 88 6.13、Service组件 89 6.13.1、Report组件 89 6.13.2、Engine组件 90 6.13.3、“OutLine”组件 91 6.13.4、引擎组件的使用 91 6.15 Anchors 94 6.16 “Outline” 组件的使用方法 96 6.17 “OnManualBuild” 页面事件 98 6.18 脚本中的组件的建立 104 第七章 交叉报表 106 7.1、创建交叉报表 108 7.2、改变显示 110 7.3、使用函数 112 7.4、对结果进行排序 112 7.5、组合标题的表格 113 7.6、调整单元格的宽度 115 7.7、字体颜色和突出显示 117 7.8、使用脚本语言管理组件 118 7.9、调整行和列的大小 123 7.10、手动填充表格单元 124 7.11、在表格单元中加入其他组件 126 7.12、一些有用的设置 129 第八章 制图表 132 8.1、chart数据中数字的限制 137 8.2、设置 137 8.3、指定数字制表 138 8.4、利用脚本进行制表 139 8.5、在delphi环境中创建的报表打印 139 第九章 点阵报表 140 9.1、点阵报表使用交叉报表 144 9.2、点阵报表打印 145 9.3、命令组件 146 第十章 对话框窗体 147 10.1、控件 148 10.2、“世界你好!”报表 149 10.3、输入参数,并传递到报表中 150 10.4、组件的交互 150 10.5、多个对话框表单 151 10.6、对话框窗体的管理 152 第十一章 数据访问组件 155 11.1、组件的描述 156 11.1.1、TfrxDBLookupCombobox组件 157 11.1.2、TfrxADOTable组件 157 11.1.3、TfrxAdoQuery组件 159 11.1.4、TfrxADODatabase组件 161 11.2、创建报表 161 11.3、简单的列表式报表 162 11.4、参数查询报表 163 11.5、其他可用配置 164 第十二章 报表的继承性 166 12.1、创建报表 167 12.2、修改基础模板 169 12.3、组件的继承 170 第十三章 报表向导 171 13.1、新报表向导 172 13.2、数据连接向导 175 13.3、新table向导 176 13.4、新query向导 177 13.5、查询语句生成 177 第十四章 报表的预览 打印 导出 180 14.1、控制键 182 14.2、鼠标控制 182 14.3、报表打印 183 14.4、报表中的文字搜索 183 14.5、报表的导出 184
第一章设计 1.1、控制键 1.2、鼠标操作 1.3、工具栏 1.3.1、设计模式工具栏 1.3.2、“标准”工具栏 1.3.3、“文本”工具栏 1.3.4、“边筐”工具栏 1.3.5、“对齐”工具栏 1.4、设计选项 1.5、报表设置 1.6页面设置 第二章创建报表 2.1、报表对象 2.2、“世界,你好!”报表事例 2.3、“Text”组件 2.4、在“Text”组件中使用HTML标记 2.5、通过“Text”组件显示公式 2.6、FastReport中的Bands 2.7、DataBand 2.8、TfrxDBDataSet组件 2.9、“客户列表”报表 2.10、通过text组件显示数据表字段 2.11别名 2.12、变量 2.13、“Picture”控件 2.14、图形报表 2.15、多行文本显示 2.16、文本拆分 2.17、组件的Wrap 2.18、显示数据表中的数据 2.19、标签式打印 2.20、子bands 2.21、组件的移动 2.22、两个数据阶的报表(主—细) 2.23、页首和页尾数据Band 2.24、多页报表 第三章分组集合体 3.1、分组打印 3.2、其他分组特性 3.3页码的重设 3.4、组的操作 3.5、行数 3.6、函数集 3.7、页和报表统计 3.8、插入汇总函数 第四章格式化、加强 4.1、格式化输出结果 4.2、内嵌格式化 4.3、条件显示 4.4、分行显示数据行的颜色 第五章嵌套报表 5.1嵌套报表 5.2、设计子报表 5.3、子报表中的限制 5.4、PrintOnParent选项 第六章脚本 6.1、体验脚本语言 6.2、脚本结构 6.3、“世界你好!”脚本 6.4、脚本中组件对象的使用 6.5、调用报表变量列表中的变量。 6.6、调用数据表子段 6.7、脚本中调用汇总函数 6.8、报表中变量值的显示 6.9、事件 6.10、一个使用“OnBeforePrint”事件的例子 6.11、在组头打印组的汇总信息 6.12、“OnAfterData”事件 6.13、Service组件 6.13.1、Report组件 6.13.2、Engine组件 6.13.3、“OutLine”组件 6.13.4、引擎组件的使用 6.15Anchors 6.16“Outline”组件的使用方法 6.17“OnManualBuild”页面事件 6.18脚本中的组件的建立 第七章交叉报表 7.1、创建交叉报表 7.2、改变显示 7.3、使用函数 7.4、对结果进行排序 7.5、组合标题的表格 7.6、调整单元格的宽度 7.7、字体颜色和突出显示 7.8、使用脚本语言管理组件 7.9、调整行和列的大小 7.10、手动填充表格单元 7.11、在表格单元中加入其他组件 7.12、一些有用的设置 第八章制图表 8.1、chart数据中数字的限制 8.2、设置 8.3、指定数字制表 8.4、利用脚本进行制表 8.5、在delphi环境中创建的报表打印 第九章点阵报表 9.1、点阵报表使用交叉报表 9.2、点阵报表打印 9.3、命令组件 第十章对话筐窗体 10.1、控件 10.2、“世界你好!”报表 10.3、输入参数,并传递到报表中 10.4、组件的交互 10.5、多个对话筐表单 10.6、对话筐窗体的管理 第十一章数据访问组件 11.1、组件的描述 11.1.1、TfrxDBLookupCombobox组件 11.1.2、TfrxADOTable组件 11.1.3、TfrxAdoQuery组件 11.1.4、TfrxADODatabase 11.2、创建报表 11.3、简单的列表式报表 11.4、参数查询报表 11.5、其他可用配置 第十二章报表的继承性 12.1、创建报表 12.2、修改基础模板 12.3、组件的继承 第十三章报表向导 13.1、新报表向导 13.2、数据连接向导 13.3、新table向导 13.4、新query向导 13.5、查询语句生成 第十四章报表的预览打印导出 14.1、控制键 14.2、鼠标控制 14.3、报表打印 14.4、报表中的文字搜索 14.5、报表的导出

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧