http://dev.yesky.com/SoftChannel/72342371928440832/20040425/1791408.shtml
请各位高手试试,有没有用根据本教程实现的代码,或者用FastReports3.0以上版本实现的代码?
14 个解决方案
#1
没用过,我只用report machine
#2
report machine能实现吗?在试过在打印之前,在数据库表里进行判断,
当记录数 MOD 6(最多的行数)不为0时,就往数据表加多不足的空行,
这样基本可以实现,但是这样没有利用到报表设计器,在设计时比较烦麻。
当记录数 MOD 6(最多的行数)不为0时,就往数据表加多不足的空行,
这样基本可以实现,但是这样没有利用到报表设计器,在设计时比较烦麻。
#3
打印空行问题?我没有试过你给的链接里那种脚本的方法。
给你说说我的方法吧。
把你要打印空行的Band指向虚拟数据集,RecCount设为6,上面放上一堆空白的Memo,好,空行出来了吧?千万记得把这么Memo设为透明D。
然后,在这个Band上放一个子报表,没错,就是让子报表覆盖这些空白的Memo。
然后在子报表里面放你要显示的数据,OK,数据也出来了。
报表生成的时候,会首先就生成6行空白行,然后再根据你的数据库记录总数,生成数据行。
嘿嘿,给我分吧,这马甲刚上线,缺钱呢。
给你说说我的方法吧。
把你要打印空行的Band指向虚拟数据集,RecCount设为6,上面放上一堆空白的Memo,好,空行出来了吧?千万记得把这么Memo设为透明D。
然后,在这个Band上放一个子报表,没错,就是让子报表覆盖这些空白的Memo。
然后在子报表里面放你要显示的数据,OK,数据也出来了。
报表生成的时候,会首先就生成6行空白行,然后再根据你的数据库记录总数,生成数据行。
嘿嘿,给我分吧,这马甲刚上线,缺钱呢。
#4
楼上兄弟的妙招啊!只是没有试用过。
#5
拉几个空白的行. 然后判断数据集的记录数
band.visible := RecNO < 4;
band2.visible := RecNO < 3;
..
band.visible := RecNO < 4;
band2.visible := RecNO < 3;
..
#6
用子Band,一个一个连,然后上面代码
#7
你双击一下Band,右下角不是有个记录数?默认是1,就是这个了,把它改成6。
===========================================================
编号: 2 发送者 lfcq 发送时间 2004-11-24 9:24:04 删除 回复
内容 请问这个是指??
把你要打印空行的Band指向虚拟数据集,RecCount设为6,
怎么找不到reccount?有源码吗?分......一定给
先谢了!
===========================================================
===========================================================
编号: 2 发送者 lfcq 发送时间 2004-11-24 9:24:04 删除 回复
内容 请问这个是指??
把你要打印空行的Band指向虚拟数据集,RecCount设为6,
怎么找不到reccount?有源码吗?分......一定给
先谢了!
===========================================================
#8
我试过,可以留空行,但是这样仍然无法完成打印表格的功能.
如:当数据表记录总数为4或者10时,表格的行数为6,这时就是
要打印4行数据为空白的表格.而您上面的方法好像实现不了.
如:当数据表记录总数为4或者10时,表格的行数为6,这时就是
要打印4行数据为空白的表格.而您上面的方法好像实现不了.
#9
哦,终于明白你要做什么效果了,每页页尾不足6行的补空白行是吧?
说什么打印空行....我以为你要每行主项数据后面要放空行....-_-# 主啊,原谅我吧。
那就用脚本搞定就可以了
(1)在主项数据Band的脚本里面用个临时变量保存你主项数据的LINE#,比如:LineNo := [LINE#];
(2)然后放个子Band在主项数据Band后面,随便给个名称叫Child吧,上面放些空白Memo。
(3)放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
LineNo := LineNo Mod 6;
if LineNo > 0 then
for I := 0 to (6-LineNo-1) do
ShowBand(child);
说D很清楚了吧,嗯,来来来,give me 分,该死的CSDN居然关闭可用分转赠,诚彼娘之非悦。
说什么打印空行....我以为你要每行主项数据后面要放空行....-_-# 主啊,原谅我吧。
那就用脚本搞定就可以了
(1)在主项数据Band的脚本里面用个临时变量保存你主项数据的LINE#,比如:LineNo := [LINE#];
(2)然后放个子Band在主项数据Band后面,随便给个名称叫Child吧,上面放些空白Memo。
(3)放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
LineNo := LineNo Mod 6;
if LineNo > 0 then
for I := 0 to (6-LineNo-1) do
ShowBand(child);
说D很清楚了吧,嗯,来来来,give me 分,该死的CSDN居然关闭可用分转赠,诚彼娘之非悦。
#10
清楚,我试试:)
谢谢!
还有一个小问题,当打印了6行后,如何进行换页.
在新的页面打印后续的数据?
谢谢!
还有一个小问题,当打印了6行后,如何进行换页.
在新的页面打印后续的数据?
#11
d
#12
【换页】
在主数据项Band的脚本里面写
if [LINE#] > 6 then
newpage;
在主数据项Band的脚本里面写
if [LINE#] > 6 then
newpage;
#13
换页的OK了,但是补空白行的不行.
放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
ShowBand(child);
一放到页脚,会出现错误!
真是痛苦......
放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
ShowBand(child);
一放到页脚,会出现错误!
真是痛苦......
#14
使用fastreport3.0,我在主项数据BAND的AFTERPRINT下可以实现.
但问题是需要传入数据表记录数总数及第页打印的记录数.我在程序中总无法实现.
yeliming(重返光荣) ,请再帮我相想办法?
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
var lin,linecount,rcount:integer;
begin
lin:=<line#>;
linecount:=7;
rcount:=30;
if <line#> =rcount then//传入记录数
begin
while lin mod linecount <>0 do
begin
Engine.showband(child1);
lin:=lin+1;
end;
end;
if (<Line#> -1 <>0) and ((<Line#>) mod linecount =0) then
begin
Engine.newpage;
end;
end;
但问题是需要传入数据表记录数总数及第页打印的记录数.我在程序中总无法实现.
yeliming(重返光荣) ,请再帮我相想办法?
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
var lin,linecount,rcount:integer;
begin
lin:=<line#>;
linecount:=7;
rcount:=30;
if <line#> =rcount then//传入记录数
begin
while lin mod linecount <>0 do
begin
Engine.showband(child1);
lin:=lin+1;
end;
end;
if (<Line#> -1 <>0) and ((<Line#>) mod linecount =0) then
begin
Engine.newpage;
end;
end;
#1
没用过,我只用report machine
#2
report machine能实现吗?在试过在打印之前,在数据库表里进行判断,
当记录数 MOD 6(最多的行数)不为0时,就往数据表加多不足的空行,
这样基本可以实现,但是这样没有利用到报表设计器,在设计时比较烦麻。
当记录数 MOD 6(最多的行数)不为0时,就往数据表加多不足的空行,
这样基本可以实现,但是这样没有利用到报表设计器,在设计时比较烦麻。
#3
打印空行问题?我没有试过你给的链接里那种脚本的方法。
给你说说我的方法吧。
把你要打印空行的Band指向虚拟数据集,RecCount设为6,上面放上一堆空白的Memo,好,空行出来了吧?千万记得把这么Memo设为透明D。
然后,在这个Band上放一个子报表,没错,就是让子报表覆盖这些空白的Memo。
然后在子报表里面放你要显示的数据,OK,数据也出来了。
报表生成的时候,会首先就生成6行空白行,然后再根据你的数据库记录总数,生成数据行。
嘿嘿,给我分吧,这马甲刚上线,缺钱呢。
给你说说我的方法吧。
把你要打印空行的Band指向虚拟数据集,RecCount设为6,上面放上一堆空白的Memo,好,空行出来了吧?千万记得把这么Memo设为透明D。
然后,在这个Band上放一个子报表,没错,就是让子报表覆盖这些空白的Memo。
然后在子报表里面放你要显示的数据,OK,数据也出来了。
报表生成的时候,会首先就生成6行空白行,然后再根据你的数据库记录总数,生成数据行。
嘿嘿,给我分吧,这马甲刚上线,缺钱呢。
#4
楼上兄弟的妙招啊!只是没有试用过。
#5
拉几个空白的行. 然后判断数据集的记录数
band.visible := RecNO < 4;
band2.visible := RecNO < 3;
..
band.visible := RecNO < 4;
band2.visible := RecNO < 3;
..
#6
用子Band,一个一个连,然后上面代码
#7
你双击一下Band,右下角不是有个记录数?默认是1,就是这个了,把它改成6。
===========================================================
编号: 2 发送者 lfcq 发送时间 2004-11-24 9:24:04 删除 回复
内容 请问这个是指??
把你要打印空行的Band指向虚拟数据集,RecCount设为6,
怎么找不到reccount?有源码吗?分......一定给
先谢了!
===========================================================
===========================================================
编号: 2 发送者 lfcq 发送时间 2004-11-24 9:24:04 删除 回复
内容 请问这个是指??
把你要打印空行的Band指向虚拟数据集,RecCount设为6,
怎么找不到reccount?有源码吗?分......一定给
先谢了!
===========================================================
#8
我试过,可以留空行,但是这样仍然无法完成打印表格的功能.
如:当数据表记录总数为4或者10时,表格的行数为6,这时就是
要打印4行数据为空白的表格.而您上面的方法好像实现不了.
如:当数据表记录总数为4或者10时,表格的行数为6,这时就是
要打印4行数据为空白的表格.而您上面的方法好像实现不了.
#9
哦,终于明白你要做什么效果了,每页页尾不足6行的补空白行是吧?
说什么打印空行....我以为你要每行主项数据后面要放空行....-_-# 主啊,原谅我吧。
那就用脚本搞定就可以了
(1)在主项数据Band的脚本里面用个临时变量保存你主项数据的LINE#,比如:LineNo := [LINE#];
(2)然后放个子Band在主项数据Band后面,随便给个名称叫Child吧,上面放些空白Memo。
(3)放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
LineNo := LineNo Mod 6;
if LineNo > 0 then
for I := 0 to (6-LineNo-1) do
ShowBand(child);
说D很清楚了吧,嗯,来来来,give me 分,该死的CSDN居然关闭可用分转赠,诚彼娘之非悦。
说什么打印空行....我以为你要每行主项数据后面要放空行....-_-# 主啊,原谅我吧。
那就用脚本搞定就可以了
(1)在主项数据Band的脚本里面用个临时变量保存你主项数据的LINE#,比如:LineNo := [LINE#];
(2)然后放个子Band在主项数据Band后面,随便给个名称叫Child吧,上面放些空白Memo。
(3)放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
LineNo := LineNo Mod 6;
if LineNo > 0 then
for I := 0 to (6-LineNo-1) do
ShowBand(child);
说D很清楚了吧,嗯,来来来,give me 分,该死的CSDN居然关闭可用分转赠,诚彼娘之非悦。
#10
清楚,我试试:)
谢谢!
还有一个小问题,当打印了6行后,如何进行换页.
在新的页面打印后续的数据?
谢谢!
还有一个小问题,当打印了6行后,如何进行换页.
在新的页面打印后续的数据?
#11
d
#12
【换页】
在主数据项Band的脚本里面写
if [LINE#] > 6 then
newpage;
在主数据项Band的脚本里面写
if [LINE#] > 6 then
newpage;
#13
换页的OK了,但是补空白行的不行.
放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
ShowBand(child);
一放到页脚,会出现错误!
真是痛苦......
放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
ShowBand(child);
一放到页脚,会出现错误!
真是痛苦......
#14
使用fastreport3.0,我在主项数据BAND的AFTERPRINT下可以实现.
但问题是需要传入数据表记录数总数及第页打印的记录数.我在程序中总无法实现.
yeliming(重返光荣) ,请再帮我相想办法?
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
var lin,linecount,rcount:integer;
begin
lin:=<line#>;
linecount:=7;
rcount:=30;
if <line#> =rcount then//传入记录数
begin
while lin mod linecount <>0 do
begin
Engine.showband(child1);
lin:=lin+1;
end;
end;
if (<Line#> -1 <>0) and ((<Line#>) mod linecount =0) then
begin
Engine.newpage;
end;
end;
但问题是需要传入数据表记录数总数及第页打印的记录数.我在程序中总无法实现.
yeliming(重返光荣) ,请再帮我相想办法?
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
var lin,linecount,rcount:integer;
begin
lin:=<line#>;
linecount:=7;
rcount:=30;
if <line#> =rcount then//传入记录数
begin
while lin mod linecount <>0 do
begin
Engine.showband(child1);
lin:=lin+1;
end;
end;
if (<Line#> -1 <>0) and ((<Line#>) mod linecount =0) then
begin
Engine.newpage;
end;
end;