H hugecheng Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #1 我要制作一个每页都固定的表,每页都有表头,表尾,且每页的行数固定,不 管数据的记录数为多少,(如果一页的记录数只有1个,他都要打印出10行);
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #4 这好办。设置一个全局变量Cur_Line,用来标记当前打印的是当页的第几行。 然后设置QuickReport的DataSet为空,在OnNeedData里面给Detail里面的字段赋值。 没赋值一次,给Cur_Line+1,然后判断是否打够当前行,是否到达DataSet的结尾等。 如果到了DataSet的末尾且打印满一页。则结束打印。 如果已经打印够了行数,则换页(NewPage), 如果到了DataSet的末尾但是没有打印满一页。则打印空行。 如果没有打印够行数,则继续打印 …… 即使简单的逻辑判断。注意这样做的时候,需要在BeforePrint里面,设置DataSet.First,就是 Query1.First或者Table1.First等。
这好办。设置一个全局变量Cur_Line,用来标记当前打印的是当页的第几行。 然后设置QuickReport的DataSet为空,在OnNeedData里面给Detail里面的字段赋值。 没赋值一次,给Cur_Line+1,然后判断是否打够当前行,是否到达DataSet的结尾等。 如果到了DataSet的末尾且打印满一页。则结束打印。 如果已经打印够了行数,则换页(NewPage), 如果到了DataSet的末尾但是没有打印满一页。则打印空行。 如果没有打印够行数,则继续打印 …… 即使简单的逻辑判断。注意这样做的时候,需要在BeforePrint里面,设置DataSet.First,就是 Query1.First或者Table1.First等。
S sundart Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #5 如果你用的是QuickReport,那么你可以查看一下 Delphi自带的Demo,在Delphi5/Demos下。 如果是其它报表系统,比如FastReport等,你可以在DFW上搜索一下很多的。
S sherman Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #6 用fastreport吧,只要设置master data行的属性为print on empty 设置page header行就实现了,太简单了
H hugecheng Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #8 我做的这个报表是10个记录为一页,并且每页都需要合计金额.换页之后表头页必须有. (我用的是quickreport)
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #9 表头必须有,这不难吧,放置在ColumnHeader里面就可以了。 至于如何打印空行,我上面已经说了。[]
H hugecheng Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #11 to yzhshi: 你好!把表头放在columnheader,不会有什么问题吧?
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #12 当然没问题了。虽然他叫ColumnHeader,但是实际上没有和DetailBand里面的元素建立对应关系。 所以你想每页都打印的元素,均可以放置在这里面。
H hugecheng Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #13 to yzhshi: 我把我的问题详细的说一下吧!仓库开出凭证单据,每一张凭证上只能开出十条记录, 当记录数多出十条时,凭证号码自动加一,那么就要打出一张新的凭证,每一张凭证都是单独 做合计的.该如何处理呢?谢谢!(比方说我开了16条记录的凭证,那么就要连续打印出两张 凭证单,一张有10条,一张有6条外加4个空记录,合计是分开做的)
to yzhshi: 我把我的问题详细的说一下吧!仓库开出凭证单据,每一张凭证上只能开出十条记录, 当记录数多出十条时,凭证号码自动加一,那么就要打出一张新的凭证,每一张凭证都是单独 做合计的.该如何处理呢?谢谢!(比方说我开了16条记录的凭证,那么就要连续打印出两张 凭证单,一张有10条,一张有6条外加4个空记录,合计是分开做的)
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-02 #14 没问题呀。 你除了需要设置一个当前打印行数的全局变量外,还要设置一个当前打印页数的变量 (当然在NewPage事件里面做也可以不设置) 其他的就是全部在OnNeedData里面编程了。 逻辑: 1、BeforePrint里面设置DataSet.First; 2、在OnNeedData事件里面 a.判断是否满足行数且达到DataSet.Eof,如果成立,计算最后页的合计,退出 b.判断是否达到记录结尾(此时没有满足行数),如果是,则打印空行。如果不是 则显示具体数据 c.判断是否打印满一页的行数,如果是,则计算页合计,开始新页。
没问题呀。 你除了需要设置一个当前打印行数的全局变量外,还要设置一个当前打印页数的变量 (当然在NewPage事件里面做也可以不设置) 其他的就是全部在OnNeedData里面编程了。 逻辑: 1、BeforePrint里面设置DataSet.First; 2、在OnNeedData事件里面 a.判断是否满足行数且达到DataSet.Eof,如果成立,计算最后页的合计,退出 b.判断是否达到记录结尾(此时没有满足行数),如果是,则打印空行。如果不是 则显示具体数据 c.判断是否打印满一页的行数,如果是,则计算页合计,开始新页。