在PB 7.0中实现多数据窗口的连续打印
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
PowerBuilder最吸引人的地方就是她那强大的数据窗口技术,它为展现数据的本质提供了丰富的手段,数据窗口能够从多种数据源提取数据,然后以多种风格展现在用户面前,对于一个PB程序员能否用好用活数据窗口是那么的重要,同时也反映出编程人员的一定技术水平。
相信在看了本文之后一定会对你编写程序有所帮助,文中如有任何不妥之处还请同仁们多多指教。
在实际的应用中我们或许会碰到用户有这样的要求,在第一张报表上打印一个客户的购买商品的统计数据,以后的每页显示的是他购买商品的明晰清单。也就是相当于打印两份报表,一份是统计报表,另一份是明细表。单纯就这两份报表而言对于任何一个PB程序员来说都不是什么难事,很容易就可以搞定,我们完全可以分两张报表打印给用户,但这还总是让我们觉得似乎缺了点什么,毕竟用户是想让这两份报表作为一个整体出现,最起码的要求是它们的页号应该连续,并且同时也能告之用户总共有多少页。这就涉及到多个数据窗口连续打印的问题。
首先,统计和明细的结果是根据用户输入的条件来得到的,这是个不定的结果,我们无法预先得知会有多少条数据,更别说需要多少页了。即便是我们能够确定有多少条数据也会因为用户打印机的纸张设置不同而会出现不同的显示结果。其次,要在统计表和明细表里显示两张报表的总页数,这个有点难度,毕竟对于两张报表来说都是个未知数,即对于统计表来说,它可以知道自己的总页数,但不知道明细表的总页数。同样对于明细表也是这样,只知道自己的总页数,而不知道统计表的总页数。这样很难在两张报表里分别显示它们的页数之和。虽然如此可对于它们自己而言当前是第几页还是能够确定的,这个只要调用数据窗口的内嵌函数Page()就可以很容易的得到。
下边我们就通过一个简单的例子来探讨如何实现多个数据窗口连续打印技术。程序首先让用户输入客户号,然后系统根据用户输入的客户号统计出该客户各类商品的购买总数以及订购的每一种商品明细。整个程序的执行如下三副图所示:


在开始之前先让我们看一下例子中用到的三张表的结构以及它们之间的相互关系,见下图:
其中,表Customer和表Sales_Order通过cust_id(客户编号)相关联,表Sales_Order和表Sales_Order_Items通过id(销售定单号)相关联。这三张表取自于PB自带的演示数据库。
首先我们要做的第一件事就是制作两张带检索参数的数据窗口,这个很简单我就不细说了。其中,统计表命名为dw_1,明细表命名为dw_2。同时,为了在打印的时候显示给用户“第几页”“总共多少页”的信息,因此在两张报表每页的底端分别加上一个计算域用来显示当前页数和总页数信息。以统计表dw_1为例,在dw_1中增加两个计算域,取名为page_1 和computer_2。见下图:
接下来要做的就是如何正确给这两个计算域赋值。对于当前页的显示,在前面已经说过了,可以直接在计算域的表达试中调用数据窗口的内嵌函数Page(),因此,在page_1的表达式中写上函数Page()。 现在来实现总页数赋值。我们知道在在数据窗口的内嵌函数中除了能得到当前页的Page()函数,还有一个函数叫PageCount(),它的功能是得到当前报表的总页数。如果说只有一张报表的话直接把它写上就行了,但问题是现在的总页数实际上是当前报表(统计表)总页数加上另一张报表(明细表)总页数之和。为了在统计表中得到明细表的总页数,我们不妨再增加一个计算域next_pagecount,该计算域保存有明细表的页数。见下图:
- [1] [2] [3] 下一页
-
- 在PB 7.0中实现多数据窗口的连续打印 相关文章:
- ·在PB 7.0中实现多数据窗口的连续打印
- 在PB 7.0中实现多数据窗口的连续打印 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:在POWERBUILDER中使用WINSOCK控件的方法
精品推荐
热点TOP10
- ·在PB中用Flash制作Splash封面
- ·在PB中如何对ASA进行数据备份
- ·循序渐进学习Power Builder 6.0(13-3)
- ·循序渐进学习Power Builder 6.0(15-4)
- ·循序渐进学习Power Builder 6.0(15-2)
- ·循序渐进学习Power Builder 6.0(14-3)
- ·循序渐进学习Power Builder 6.0(14-2)
- ·在pb6.0以上版本中创建数据库
- ·PowerBuilder应用开发系列讲座(23)
- ·PowerBuilder应用开发系列讲座(39)
- ·PowerBuilder应用开发系列讲座(4)
- ·在PB中用OLE存取blob类型数据
- ·PB5对SQLSERVER6数据库的访问
- ·深入了解PowerBuilder的数据窗
- ·PowerBuilder应用开发系列讲座(38)
- ·在PB中动态调用函数
- ·PowerBuilder应用开发系列讲座(3)
- ·用PowerBuilder6.0建立B/S结构应用程序
- ·PowerBuilder实用技巧八则
- ·PB应用ODBC访问不同数据库
