数据为
A001 B001
A001 B002
A001 B003打印成
B001
A001 B002
B003
A001 B001
A001 B002
A001 B003打印成
B001
A001 B002
B003
解决方案 »
- 类似TADOTable组件的属性问题
- SysUtils是封装在哪个DLL里的呢?
- 关于delphi 导入excel的问题,excel的合并单元格如何导入?
- 怎么判断 窗口是否有 WS_DISABLED 属性?
- 从TPanel继承的控件,在窗口的释放时提示“no parentwindow”信息?
- !!!火!!!
- 哪位老兄机器上装有Delphi 5 ?? 请发给我一个文件TEEQR50.bpl 在/System32下重谢!!!狂谢
- 一个关于游标的问题
- 100分求一个支持ADO的类似DecisionGraph的控件,
- 如何在TStringGrid中实现:双击表头分搁线时此列自动调宽?
- 请教一下,假设我已知一个窗口的句柄如#6666,我该怎么直接使用这个句柄
- 在DBGrid使用五笔输入时,如果用鼠标点击其他Edit,会变成英文输入法,再点回DBGrid输入法还是英文,如何让它保持为五笔输入?(现所有控
可以构筑成主细表,要按照主细表的话,
可以很容易实现:
A001
B001
B002
B003
这种格式
数据为
A001 B001
A001 B002
A001 B003打印成
B001
A001 B002
B003
如果你要这样做报表的话,还不如:
数据ID 数据 ID 数据
1 A001 1 B001
2 A002 1 B001
这样你取数据的时候就没有冗余了。
我刚发现的,你可以试试,
在master data中把包含变量A00的memo的FrameTyp设为8,B00的memo的FrameTyp设为15,然后在含有A00的memo上右键,选中suppress repeated values,
执行时是这样的形式-------------------------
A001 1 B001 1
1 -------------1
1 B002 1
1 -------------1
1 B003 1
1 -------------1
不知道是不是你要的形式
在主报表里把两个子报表这样排列:
---------------------
SupReport1|SupReport2 <--两个子表并排放置
|
|
|
|
|
---------------------
然后在From中用Query把SupReport1中显示的记录数统计出来,传到Fastreport中。在Fastreport中定义变量,我这里定义变量countnum。
下来在SupReport1中master data的OnBeforePrint属性里写上:
begin
MasterHeader1.Height:=[countnum]*28/4;
end
这样就能实现:
一一一一一一一一一一一一
1 1 张三 1 1000 1
1 1 李四 1 2000 1
1 1 王五 1 3000 1
1 1 张三 1 1000 1
1销售部 1 李四 1 2000 1
1 1 王五 1 3000 1
1 1 张三 1 1000 1
1 1 李四 1 2000 1
1 1 王五 1 3000 1
一一一一一一一一一一一一
这样的效果。
但是这样只能对一个部门的打印,达到上面的格式。如果是一次打印多个部门的,那么你就要对MasterHeader 和 MasterData 的 Height 属性自己研究一下了,看看怎么样设置他们的值比较合适。
忘记说了上面的28是 MasterHeader和MasterData的默认高度,这里你不一定写28可以自己定义。不过两个子表中所有的Band的Height的初始值最好都一样,这样定位才准确。