在PB 7.0中实现多数据窗口的连续打印

豆豆网   技术应用频道   2006年08月05日    社区交流

本文详细介绍在PB 7.0中实现多数据窗口的连续打印

  以上代码表示,如果第一条数据的sales_amount值大于2,则函数返回“2”,否则ls_return 的值为sales_amount。注意,函数Describe返回的是字符串类型的数据。

  有了这两个函数之后我们就可以在程序中得到一个数据窗口的页数,实现代码如下

  string ls_pagecount

  ls_pagecount = dw_2.Describe("Evaluate('pagecount()',1)") // 得到DW_2中总页数

  dw_1.object.next_pagecount.expression = ls_pagecount // 给计DW_1中的算域赋值

  最后我们就可以在computer_2计算域的表达式中写上:pageCount() + next_pagecount,从而得到两张报表的页数之和。

  对于明细的表的做法也是如此,就不再浪费笔墨了。需要提醒大家注意的是,由于明细表是紧接着统计表打印出来的,所以它的当前页数理所当然应该接着统计表连续下去,因此在明细表的当前页数计算域中不能是简单的page(),因该加上统计表的总页数,即,page() + previous_pagecount。其中previous_pagecount为计算域,是用来存放统计表的总页数,它相当于统计表中的next_pagecount。同样,也应该在代表总页数的计算域的表达式中加上统计表的总页数,即,pagecount() + previous_pagecount。

  当全部设置完之后我们可以来看看效果如何了。运行一下,两张报表的当前页数和总页数都很正确,而且第二份报表的页数也是正好承接于第一份报表。在目前看来至少是符合了程序的设计要求,现在我们来打印看看...奇怪,怎么报表的页号乱了?是不是程序写错了?...都不是!通过分析显示的报表和打印的报表我们发现,原来我们上面所取得的报表总页数都只是显示时候的,即它的结果是根据你的数据窗口控件的大小计算出来的。也就是说,假设这次在数据窗口里检索出10条符合条件的记录,如果数据窗口做的足够大的话,那么这10条记录是在一页中显示,但如果数据窗口做小了,数据就会分成几页显示(相对于数据窗口控件的大小),在这种情况下我们就会看见在数据窗口控件的右边出现一个垂直滚动条允许用户通过上下滚动查看全部的数据。无论你的数据窗口做的大还是小,这10条记录在一张标准的A4纸上是完全可以打印的下,这也就是为什么会出现上面的这种页号和总页数不相符的原因。

来源:powerba    作者:夏翔    责编:豆豆技术应用

正在加载评论...