Fastreport如何制作如下形式的报表?

fleamboy 2004-11-20 10:59:16
数据结构如下:
A表(客户信息): 序号,姓名,地址
b表(消费信息): 序号,客户序号,消费物品,数量,金额

需要生成如下报表,关键是格子如何绘制?
┏━━━━┳━━━━━┳━━━━┳━━━━━┳━━━┳━━━━┓
┃ 姓名 ┃地址 ┃消费合计┃ 消费物品 ┃数量 ┃ 金额 ┃
┣━━━━╋━━━━━╋━━━━╋━━━━━╋━━━╋━━━━┫
┃ ┃ ┃ ┃ 物品A ┃ 4 ┃ 80.00 ┃
┃张三 ┃地址1 ┃100.00 ┣━━━━━╋━━━╋━━━━┫
┃ ┃ ┃ ┃物品B ┃ 5 ┃ 20.00 ┃
┣━━━━╋━━━━━╋━━━━╋━━━━━╋━━━╋━━━━┫
┃ ┃ ┃ ┃物品A ┃ 5 ┃ 100.00 ┃
┃ ┃ ┃ ┣━━━━━╋━━━╋━━━━┫
┃李四 ┃地址2 ┃ 150.00 ┃物品B ┃ 5 ┃ 20.00 ┃
┃ ┃ ┃ ┣━━━━━╋━━━╋━━━━┫
┃ ┃ ┃ ┃物品C ┃10 ┃ 30.00 ┃
┣━━━━╋━━━━━╋━━━━╋━━━━━╋━━━╋━━━━┫
┃王五 ┃地址3 ┃75.00 ┃物品D ┃3 ┃ 75.00 ┃
┗━━━━┻━━━━━┻━━━━┻━━━━━┻━━━┻━━━━┛
现在只能做成这个样子:
┏━━━━┳━━━━━┳━━━━┳━━━━━┳━━━┳━━━┓
┃ 姓名 ┃地址 ┃消费合计┃ 消费物品 ┃数量 ┃ 金额 ┃
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
张三 地址1 100.00 物品A ┃ 4 ┃ 80.00
物品B ┃ 5 ┃ 20.00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
李四 地址2 150.00 物品A ┃ 5 ┃ 100.00
物品B ┃ 5 ┃ 20.00
物品C ┃10 ┃ 30.00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
王五 地址3 75.00 物品D ┃3 ┃ 75.00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
...全文
204 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuchu 2004-11-22
  • 打赏
  • 举报
回复
如果合计在子项后面,累加工作可以放在子项Band的脚本中执行。
SumCost := 数量 * 金额; //当然,这里指的是变量
如果合计在子项前面……你还是不要用脚本了,挺复杂,:D
子项Band的脚本里面做累加
合计Band的脚本里面需要通过Finalpass来判断是否显示
fleamboy 2004-11-22
  • 打赏
  • 举报
回复
第一次做报表,所以有很多问题。
这个脚本因该放在什么地方?要是合计在子项的后面呢?
chuchu 2004-11-22
  • 打赏
  • 举报
回复
这样合计出现在子项之前的,最好还是用程序生成,然后传出来。

虽然用脚本也可以实现,但是那比较麻烦,而且脚本多了,报表预览的速度也就慢了。
用脚本的办法是定义一个数组,每个单元记录一个汇总值,然后记得把报表设为2遍报表。
脚本中这样写:
if not finalpass then
SumCost := SumCost + ...; //汇总;
else
Memo1.Text := [SumCost]; //显示;
fleamboy 2004-11-22
  • 打赏
  • 举报
回复
虽然没有搞清楚合计的问题,但是好事谢谢各位!
JavaD 2004-11-21
  • 打赏
  • 举报
回复
加一个Group band,设置其属性中的condition(好像是这个属性)为'name,address'
chuchu 2004-11-21
  • 打赏
  • 举报
回复
你可以在你现有Memo的后面再放一些Memo,颜色是透明D,它们的作用就是用来画出表格中的竖线。
明白偶的意思么?

步骤如下:
1. "张三","地址"这些Memo由于“压缩重复值”,所以虽然有三条记录,但是只会显示一行,好,你有数据了。下一步你要做的就是补全表格线而已。
2. 在"张三","地址"等缺线的表格后面放上一些空的Memo,它的边框由你定,按你这张表,只需要画出左右两侧的线就行了,然后把这个Memo的填充色选成透明色,切记,这个空Memo不要“压缩重复值”。
3. 预览。效果出来了吧?一层Memo负责数据显示,另一层Memo负责表格线的绘制。^_^,我去年夏天也做报表,琢磨了好几天才想出这个办法,FastReport的确是个好东西。
cqm2099 2004-11-21
  • 打赏
  • 举报
回复
正在学习

UP
fleamboy 2004-11-21
  • 打赏
  • 举报
回复
对了,我的那个消费合计使用程序生成在数据库中的,不知道怎样在报表系统中直接算出这个合计,而且显示在主数据中?
chuchu 2004-11-21
  • 打赏
  • 举报
回复
对,就是用主数据+子报表实现的,也没什么不好的。
目前这种办法还无法做到垂直居中,想不出来,呵呵。就这缺点。
samchoy 2004-11-21
  • 打赏
  • 举报
回复
to chuchu(维他命C):
要怎样让张三,地址1等垂直居中呢?
older 2004-11-21
  • 打赏
  • 举报
回复
可以设置合并列的
fleamboy 2004-11-21
  • 打赏
  • 举报
回复
to chuchu(维他命C),
还有个问题请教你,我这个报表时使用一个主数据和一个子报表实现的,不知道还有没有其他更好的方法阿?

5,391

社区成员

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

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