若使用QuickRep可在onNeedData,onStartPage和onBeforePrint加入相关程式

解决方案 »

  1.   

       你可能需要产生临时表,表中增加一个标记字段,检查询到的数据用循环插到临时表中,每插10条纪录标记字段的值加一,最后不够十条纪录则用除标记字段外其余字段值为空的纪录补足.然后你就可以根据标记字段的自来分组或分页了.
      gril?!...%$%$^$^%&
      

  2.   

       正好,我最近也被这种问题困住很久了。查了很久帮助才搞定。
    具体解决办法:
       在DetailBand.BeforPrint事件中写如下代码:
        if (I mod 10 = 0) then //I 为DetailBand所连DATASET的记录值
           DetailBand.Height:=DetailBand.Height*2;
        在AfterPrint事件中写如下代码:
           DetailBand.Height:=DetailBand.Height div 2; 
    也可在DetailBand后加一ChildBand,并在ChildBand.BeforePring中写如下代码:
         if (I mod 10 = 0) then //I 为DetailBand所连DATASET的当前记录值
            Printable:=true;
        如你还有不清楚可查QuickReport的帮助,Knolwedge Base中的frequently asked question.
      

  3.   

       表二中的格式我已解决,即加空行,但目前最头痛的是第一页和其余页的格式不一样,它所需打印的只有10行,且打完10行后,还需打印如单号、公司名称等信息,接着才会打后几页。
      另外第一页的纸张大小还不一样。
      
      关于加空行解决方法建立临时表与在QuickRep的事件中写代码都可以,但临时表数据大时显得很慢,我用的是Access数据库。   在此还感谢各位的热心帮助!
    to Delfly:
        请问用临时表如何解决我说的分页问题?注意:纸张大小、格式不一样。
       *“ gril?!...%$%$^$^%& “  *    
        girl 不可以吗?强烈反对性别歧视!
        
      

  4.   

       对不起,向你道歉,我只是好奇,还请原谅,其实真的希望软件业能多一些MM  :)
        我想若不用临时表,你可在做两个报表,各增加一个做计数标记(如iFlag),在Detail_Band的Afterprint事件中自增,在Beforeprint事件中根据iFlag的值判断是否打印.对于表一,iFlag<=10时打印;对于表二,iFlag>10时打印。至于单号、公司名称等可在表一的Title_Band上打印,纸张等等都可各自设置了。最后在打印钮上连续调用两个报表的Print方法。
        若用临时表就干脆生成两个临时表,一个保存前10条纪录,另一个保存其余的纪录,这个可以在循环插到临时表时实现。最后和上面一样,也用两个报表实现。
      有点笨,但很实用。
      再一次向你道歉。
      

  5.   

       多谢各位的帮助,这张报表我已经彻底解决了,两种方法结合使用,在Detail_Band的beforprint事件中加入分页程序"if 标记='11' then Quickrep1.NewPage",单号、公司名称等可在的Title_Band中用QRLabel设好,再打印前设置其Top属性即可.
      to Delfly:
      你也不用太内疚,说笑而已,我这人一大好处,不爱记仇,放心!而且也不太在乎别人的看法。
    还要多谢你不惜笔墨的帮助。 
      Tanks!