fastreport 打印(200分)

  • 主题发起人 主题发起人 专注
  • 开始时间 开始时间

专注

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的报表控件是fastreport 3.15中文版,现在遇到几个问题,请各位高手解答
1、最后一页不足用空行补齐
2、合计数怎么做
在线等待。
 
1、补齐的方式看你自己想怎么处理了。我打发票的时候想补齐,是把数据集里面加上空白的数据行。这样可以在delphi里面使用代码实现。你也可以使用fastreport的脚本实现。看你喜欢。
2、合计数可以在fastreport直接使用合计的公式吧,比如你把合计放在floot(报表末),PageFooter页末
 
to zywcd 我打发票,想以空行补齐,具体是怎么实现,我想要脚本,网点说的那些freespace的好像不行啊。
 
这样说吧。
比如我有f1,f2,f3,f4字段。发票设计行数是10行,
但是我现在的数据可能有8行。我会修改sql,认为的加上几个空行数据。
select f1,f2,f3,f4 from tanlename
union
select '','','','' from tanlename
union
select '','','','' from tanlename
当然这部分使用代码来自动生成。
其实这样的方法是很笨的。当时只是想实现,把软件快速做完而已,没有找其他的方式。
 
这种方法可能不行,我所有的数据是计算得来的,不知道有多少行,而且用户要自定义打印行数,再说不可能每张单据都要改程序吧,有没有直接通过报表设置完成的?
 
前几天好像见过。
一起找找。
 
问题: fastreport不满一页用空行代替的问题 ( 积分: 30 )
分类: 报表/统计图形

来自: a-ming, 时间: 2005-06-26 16:28:00, ID: 3114456
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin

while freespace>child1.heightdo

showband(child1);
end;

如上过程中,我想在未满一页时打印空行,想预览,却说“标识符未宣告:'freespace'?若在上面的过程中只用showband(child1)一句,却告知“标识符未宣告:'showband'?我用的是fastreport3.03中文版。谁能帮我解决未满一页时打印空行呀?

来自: n@p, 时间: 2005-06-26 20:19:24, ID: 3114631
用 insert new band 后选report summary不就得了,不用编程

来自: zxy666666, 时间: 2005-06-27 10:39:08, ID: 3114943
showband(child1);
試改為: Engine.ShowBand(Child1);

var
PageLine: integer;
//在現在頁列印到第幾行
PageMaxRow: integer=15;
//設定每頁列數
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin

PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then

Engine.newpage;
end;

//Footer1高度設為0
procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
i: integer;
begin

i := iif(PageLine=0, PageMaxRow, PageLine);
while i < PageMaxRowdo
begin

i := i + 1;
Engine.ShowBand(Child1);
//印空白表格
end;

end;

begin

end.


来自: a-ming, 时间: 2005-06-27 20:26:34, ID: 3115994
to:n@p
能否说清楚点?

来自: leadyli, 时间: 2005-06-27 20:48:16, ID: 3116011
while Engine.freespace>child1.heightdo

Engine.showband(child1);

来自: a-ming, 时间: 2005-06-28 19:07:19, ID: 3117185
to:zxy666666:
你的也不行呀。
to:leadyli:
用你这每页打一行后,剩下的都打空行,而不是最后一页才打空行。

来自: leadyli, 时间: 2005-06-29 12:01:38, ID: 3117925
你是不是限制了每頁只打一行???

来自: liwfeng, 时间: 2005-06-29 13:38:19, ID: 3118063
zxy666666..的方法是可以的..前几天..我也遇到这个问题...现在解决了..

来自:do
s1234, 时间: 2005-06-29 16:53:37, ID: 3118411
20. 每页固定行数
报表要求每页固定行数,最后一页不足要自动填空白行,每页在数据后就是本页合计和本期合计
1> 在FastReport里定义一个变量i
2> 在ReportBand的(OnBeforePrint)里初始化i
3> 在主数据band的(OnBeforePrint)里i:=i+1;
4> 然后添加分组头,分组条件为[INT([/20])]
不要用[LINETHROUGH#]代替i,也许是bug
5> 然后添加分组尾里(OnBeforePrint)
i:=[i MOD 20];
While (i<20) and (i>0)do

begin

ShowBand(Child1);
//Child1是一个子Band,里面放自动填充行或格子
i:=i+1;
End

来自: a-ming, 时间: 2005-06-29 20:12:28, ID: 3118596
问题是我不想固定行数,就是在最后一页未满时打印空行。

来自: leadyli, 时间: 2005-07-02 8:26:51, ID: 3121502
沒說清楚。應該是這樣的:
放一個Footer,設置它的Visible為False;再放一個Child,畫上你要的空格。
然后在Footer的BeforePrint事件中:
while Engine.freespace>child1.heightdo

Engine.showband(child1);

来自: kaida, 时间: 2005-07-02 8:39:16, ID: 3121509
在[red]Masterfooter[/red]的OnbeforePrint中键入:
begin

while FreeSpace > 20do

ShowBand(Child1)
end;


来自: a-ming, 时间: 2005-07-02 8:46:56, ID: 3121517
谢谢各位!

得分大富翁:do
s1234-5,leadyli-20,zxy666666-5,
 
关于合计,请参考:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2571036
 
这样实现是对的。
onbeforeprint方法:
while Engine.freespace>30(页边距+页注脚的高度)do

Engine.Showband(child1)----每页补齐空行
 
空格补齐的搞完了,还有一个就是每页合计的问题,各位高手继续指导啊。
 
是不是每页合计都是根据当前页的数据?
 
是呀,我是打单据的,每页打10条。那么11条是是每页合计
 
是呀,我是打单据的,每页打10条。那么11条是是每页合计
 
你加入pageflooter就可以。
里面加上你的合计字段,比如我的是应收金额
[SUM(<frxDBDataset1.&quot;应收金额&quot;>,MasterData1)].
这样就是计算每页的合计。
 
可我的就为什么会报
发生下列错误:
':';' expected
momo29 : 运算式错误 ' SUM(<票据发售单据.&quot;本数&quot;>,Masterdata1)]
呢,百思不得其解决。
 
奇怪,我这里很好啊。你仔细检查你的公式看看?
[SUM(<票据发售单据.&quot;本数&quot;>,Masterdata1)]
我明白了。你没有修改源代码?这样是不支持中文字段合计的。如果你换成英文可能就好了。
 
我的是中文版的,现在不可能再换成英文的啦,你有修改源代码的吗?
我的版本是fastreport 315 中文版 这个问题我都是按要求搞了,就是计算不出来合计数
 
你错了。我说你把字段和表名称先换成英文测试看看。
 
好,我先试试看。
 
问题原因我找出来了,我的版本在合计时不支持中文表及字段,这样的问题怎么处理呢。谁有改好的源代码?让小弟参考一下
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部