FASTREPORT 如何实现多层表头及动态字段 ( 积分: 100 )

  • 主题发起人 主题发起人 solo_1978
  • 开始时间 开始时间
S

solo_1978

Unregistered / Unconfirmed
GUEST, unregistred user!
有一查询,结果如下:
--------------------------------------------------------
| 商品编号 | 名称 | 价格 | 规格 | 数量 | 合计 |
| | | | |----|----|----| |
| | | | | 红 | 蓝 | 白 | |
|----------|------|------|------|----|----|----|-------|
| 1001 | 袜子 | 5.00| 女装 | 20 | 20 | 10 | 50 |
|----------|------|------|------|----|----|----|-------|
| 1001 | 袜子 | 5.00| 男装 | 30 | 10 | 10 | 50 |
|----------|------|------|------|----|----|----|-------|
| 1001 | 袜子 | 5.00| 童装 | 50 | 50 | 20 | 120 |
|----------|------|------|------|----|----|----|-------|
| 1002 | 裤子 | 50.00| 女装 | 60 | 50 | 40 | 150 |
|----------|------|------|------|----|----|----|-------|
| 1002 | 裤子 | 50.00| 男装 | 60 | 70 | 80 | 210 |
|----------|------|------|------|----|----|----|-------|
| 1002 | 裤子 | 50.00| 童装 | 30 | 30 | 30 | 90 |
-----------|------|------|------|----|----|----|--------
其中,“数量”是不定的,根据查询的商品所包含的颜色种类不同而变化,例如现在的包括“红、蓝、白”三种颜色,有可能查询别的商品有“红、蓝、白、黄……”等颜色。现在,在Fastreport中既要实现动态字段,又要多层表头。如何做?高手指点一下。
 
有一查询,结果如下:
--------------------------------------------------------
| 商品编号 | 名称 | 价格 | 规格 | 数量 | 合计 |
| | | | |----|----|----| |
| | | | | 红 | 蓝 | 白 | |
|----------|------|------|------|----|----|----|-------|
| 1001 | 袜子 | 5.00| 女装 | 20 | 20 | 10 | 50 |
|----------|------|------|------|----|----|----|-------|
| 1001 | 袜子 | 5.00| 男装 | 30 | 10 | 10 | 50 |
|----------|------|------|------|----|----|----|-------|
| 1001 | 袜子 | 5.00| 童装 | 50 | 50 | 20 | 120 |
|----------|------|------|------|----|----|----|-------|
| 1002 | 裤子 | 50.00| 女装 | 60 | 50 | 40 | 150 |
|----------|------|------|------|----|----|----|-------|
| 1002 | 裤子 | 50.00| 男装 | 60 | 70 | 80 | 210 |
|----------|------|------|------|----|----|----|-------|
| 1002 | 裤子 | 50.00| 童装 | 30 | 30 | 30 | 90 |
-----------|------|------|------|----|----|----|--------
其中,“数量”是不定的,根据查询的商品所包含的颜色种类不同而变化,例如现在的包括“红、蓝、白”三种颜色,有可能查询别的商品有“红、蓝、白、黄……”等颜色。现在,在Fastreport中既要实现动态字段,又要多层表头。如何做?高手指点一下。
 
查询结果既然都放在了Query中了,那么将不同的颜色绑定相应的字段就可以了。
 
好汉:但是颜色字段是动态生成出来的,有时候是三种颜色,有时候是四种,如何帮定啊?而且,重要的问题是既要动态字段又要多表头。这才是关键
 
用fr的交叉报表做,demo里有
 
看了FASTREPORT的DEMO,学到点东西,不过用处不大。
后来,想到一个很简单的办法,把查询结果输出到EXCEL,然后想怎么弄都没问题了。
 
好像不可以,我是用交叉报表做过类似的,但是最后还有一列合计,恐怖……
 
对,使用交叉报表,无法做合计。
 
合计还可以吧,几种方式,第一FR本身有些函数,看能不能调用,,而且fr也可以可以写脚本的,这个自己研究了,
第二,通过动态赋值的方式,取得某个么memo,然后赋值,这个比较麻烦点,因为是循环的
第3,自定义函数,因为始终需要调用数据集的,所以可以自定义函数,在OnUserFunction里面,大概思路就这样,不过都是些偏门的思路
不过最好是找到FR本身的方法,刚刚看到fr自带的那个Demo里面有个东西可能对你有用,它的合计也是动态的,根据前面的两个字段算出来的,我下的是3.05,你看看效果
procedure Band4OnBeforePrint(Sender: TfrxComponent);
begin
TotalSales := 0
end;

procedure Band7OnBeforePrint(Sender: TfrxComponent);
begin
TotalSales := TotalSales + <Items.&quot;Qty&quot;> * <Items.&quot;Price&quot;>;
end;
 
用脚本写,颜色的字段应该有个最大值的,比如 20个,把20个都放到band上,Visible设置为False,然后根据查询颜色的数量,来设置 Visible为True, 然后再用程序把Memo的位置定好即可!我以前的服装软件就有颜色尺码表
 
chenybin的脚本我用过,在其他报表里没有问题,但在交叉报表里无法显示,显示空白。
SeekMyself的方法虽然也可解决,但操作起来比较麻烦,不得已之下也只有这个办法,然而我想最大程度地利用FR的功能。当然FR如果确实无法做到,那也没办法了。
 
试试 Grid++Report, 有专门的例子说明此问题。主页:http://www.rubylong.cn
 
FR不是可以直接打印DBGRID的吗?好象是有,然后拿DBGRIDEH就也可以生成表头了,这也是一种办法吧?
还有动态创建表格的资料,你看看吧
你看看这个中不中,我的机子重装过,原来那玩意找不到了.
http://www.delphibbs.com/keylife/iblog_show.asp?xid=11760
作者?: zgl198171
标题?: 1、报表动态生成的类单元:
另外这个例子
http://35397.tomore.com/1/11176.html
资源名称 FastReport25動態邊接庫
就是这个了,你下下来看吧
 
后退
顶部