该教程看过多次,但总是实现不了,主要是打印空行部分。http://dev.yesky.com/SoftChannel/72342371928440832/20040425/1791408.shtml请各位高手试试,有没有用根据本教程实现的代码,或者用FastReports3.0以上版本实现的代码?

解决方案 »

  1.   

    没用过,我只用report machine
      

  2.   

    report machine能实现吗?在试过在打印之前,在数据库表里进行判断,
    当记录数 MOD 6(最多的行数)不为0时,就往数据表加多不足的空行,
    这样基本可以实现,但是这样没有利用到报表设计器,在设计时比较烦麻。
      

  3.   

    打印空行问题?我没有试过你给的链接里那种脚本的方法。
    给你说说我的方法吧。
    把你要打印空行的Band指向虚拟数据集,RecCount设为6,上面放上一堆空白的Memo,好,空行出来了吧?千万记得把这么Memo设为透明D。
    然后,在这个Band上放一个子报表,没错,就是让子报表覆盖这些空白的Memo。
    然后在子报表里面放你要显示的数据,OK,数据也出来了。报表生成的时候,会首先就生成6行空白行,然后再根据你的数据库记录总数,生成数据行。嘿嘿,给我分吧,这马甲刚上线,缺钱呢。
      

  4.   

    拉几个空白的行. 然后判断数据集的记录数band.visible := RecNO < 4;
    band2.visible := RecNO < 3;
    ..
      

  5.   

    用子Band,一个一个连,然后上面代码
      

  6.   

    你双击一下Band,右下角不是有个记录数?默认是1,就是这个了,把它改成6。===========================================================
    编号: 2 发送者 lfcq 发送时间 2004-11-24 9:24:04 删除  回复  
    内容 请问这个是指??
    把你要打印空行的Band指向虚拟数据集,RecCount设为6,
    怎么找不到reccount?有源码吗?分......一定给
    先谢了! 
    ===========================================================
      

  7.   

    哦,终于明白你要做什么效果了,每页页尾不足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居然关闭可用分转赠,诚彼娘之非悦。
      

  8.   

    【换页】
    在主数据项Band的脚本里面写
      if [LINE#] > 6 then
        newpage;
      

  9.   

    换页的OK了,但是补空白行的不行.
    放一个页脚Band,在页脚Band的脚本里面写下面这段脚本:
            ShowBand(child);
    一放到页脚,会出现错误!
    真是痛苦......
      

  10.   

    使用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;