基于OLE技术的PB统计报表的实现

时间:2022-04-28 05:17:26

基于OLE技术的PB统计报表的实现

摘要:本文介绍了OLE技术的基本知识,论述了利用OLE技术在PB中实现报表数据的统计。

关键词:报表;OLE技术;PB

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)09-11719-03

Implementation of PB Report Based on OLE

CHENG Yu1, ZHANG Xin-zhu2, YANG Jun-pu1

(1.Liaoning Provincial Party School, Shenyang 110004, China; 2.Lenovo(Shenyang) Co. Ltd, Shenyang 110004, China)

Abstract: This article introduces basic knowledge of OLE technology, also discusses application and relalization of data report in PB.

Key words: report; OLE technology; PowerBuilder

OLE是Object Linking Embedding(对象链结与嵌入)的缩写,它可以使Windows应用程序共享数据和程序。

OLE自动化是不同应用程序之间进行通讯的一个标准。OLE自动化的工作方式是:通讯被动方(OLE服务器)应用程序向通讯主动方(OLE客户机)应用程序提供一个以上可供其调用的OLE自动化对象类型,OLE客户机通过引用这些对象实现对OLE服务器的调用,然后通过设置对象的属性和使用对象的方法操纵OLE服务器应用程序,完成两者之间的通讯。

在PB中OLE控件是一个OLE对象的包容器,可以使用服务器应用程序提供的功能和命令来编辑对象,也可以使用自动化OLE交互,在程序中激活对象和向服务器应用程序发送命令;在PB 的Windows画板中的OLE控件允许用户从多个应用程序嵌入和链接组件。

可以将OLE对象嵌入或者链接到自己的应用程序中。嵌入对象的数据放在应用程序中,在开发过程中这些数据放在应用程序的PBl库中,当生成应用后,这些数据将存放在exe或PBd文件中,虽然在程序的运行过程中可以修改,但修改的数据不会保存;链结对象的数据存放在PB应用程序以外,当链结一个对象时,在PB应用程序中不存放数据文件,而是存放引用数据的指针,使用链接的数据,对数据的管理和保存都由服务器应用程序负责。这样可以用服务器应用程序修改处理数据,处理后的数据可以保存回原文件中。链接方式应用于需要多个应用程序共享的数据文件,任何一个应用程序修改了数据文件,都将影响到所有链接该文件的应用程序。

1 OLE控件

1.1 建立和设置OLE控件

从Windows画板中选择OLE控件插入Windows。当建立一个OLE控件并且插入一个对象时,PB将激活服务器应用程序以允许对对象进行编辑和修改;在使OLE中的对象为非活动状态后,可以使用控件属性选项卡来设置控件的属性。

1.2 激活修改Window画板中的OLE对象

在OLE控件的弹出菜单中选择open可以激活画板中OLE对象,使用服务器应用程序修改OLE对象, 结束修改,使对象恢复为非活动状态,只要单击服务器应用对象之外的任何区域即可,也可以直接关闭服务器应用程序的窗口。

1.3 嵌入和链结OLE控件

可以将OLE对象嵌入或者链结到自己的应用程序中。嵌入对象的数据放在应用程序中,在开发过程中这些数据放在应用程序的PBl库中,当生成应用后,这些数据将存放在exe或PBd文件中,虽然在程序的运行过程中可以修改,但修改的数据不会保存;链接对象的数据存放在PB应用程序以外,当链接一个对象时,在PB应用程序中不存放数据文件,而是存放引用数据的指针, 使用链结的数据,对数据的管理和保存都由服务器应用程序负责。这样可以用服务器应用程序修改处理数据,处理后的数据可以保存回原文件中。链结方式应用于需要多个应用程序共享的数据文件,任何一个应用程序修改了数据文件,都将影响到所有链接该文件的应用程序。

1.4 OLE控件的激活方式

OLE控件的激活方式有offsite和in-place两种激活方式,offsite激活方式是指在PB应用程序的界面以外单独打开OLE对象,in-place激活方式是指PB应用程序的界面的原位置打开OLE对象。在数据窗口中的dbOLE默认的是offsite激活方式,而Windows中的OLE默认的激活方式是in-place。

在PB应用程序中可以用命令

OLE_control.active(offsite) 或者OLE_control.active(in-place)设置OLE对象的以何种方式打开。

2 基于OLE技术的PB报表实现

Powerbuilder7.0是一个完全支持OLE自动化的应用程序开发工具。使用POWERBUILDER7.0,既可以编制做为OLE服务器的应用程序,也可以编制作为OLE客户机的应用程序。

用户要求报表管理模块采用Excel表格,Excel报表生成后,用户如果认为生成的报表数据与实际不符,可以对报表进行重新编辑,修改报表数据。

基于用户的要求考虑,选择使用Powerbuilder7.0调用OLE控件与Excel进行通讯,达到用户需求。以“地区供电量统计表”为例来说明Excel报表的实现:

程序流程如下:

地区供电量报表模板为:

如果选择的年份和月份分别为2006、12,程序运行后,生成的结果报表见图3。

程序核心代码设计如下:

ole_1.insertfile("c:\report\地区供电量月报.xls")

ole_1.object.worksheets("sheet1").cells(1,35).value=""+string(nf)+"年"+string(yf)+"月地区供电量统计表"

if retn1 then

int i

string meter_name

decimal{2} sumcoul,topcoul,botcoul,fltcoul

setpointer(hourglass!)

for i= 7 to 21

meter_name=string(ole_1.object.worksheets("sheet1").cells(i,3).value)

SELECT (sum(DayCoul.PosSumPCoul/100))/100

into:sumcoul,

FROMDayCoul,MeterConfig

WHERE DayCoul.CountryID=MeterConfig.CountryIDand

DayCoul.RTUID=MeterConfig.RTUID and

DayCoul.MeterID=MeterConfig.MeterID and

MeterConfig.MeterName=:meter_name and

DayCoul.Year=:nf and

DayCoul.Mon=:yf;

ole_1.object.worksheets("sheet1").cells(i,4).value=sumcoul

next

setpointer(arrow!)

end if

数据写入报表模板后,以offsite方式激活OLE控件:

ole_1.activate(offsite!)

此时用户可对报表数据进行必要的编辑。

3 报表制作模块的运行情况

报表制作专工的习惯方式是使用Excel制作各种报表,此程序在不改变其习惯工作方式的前提下,利用PowerBuilder 向OLE控件里的报表模板里写入统计数据,而且用户可以对报表数据进行必要的编辑。

以往报表制作专工月底计算各类报表时,采用计数器计算表底数,需要进行大量的重复性的手工计算,往往需要4-5天的时间,并且及时错误较多,需要反复核对、修改。

现在,利用此“报表制作功能模块”,可以将报表制作人员从繁琐的手工劳动中解脱出来,大量的重复数值计算由计算软件完成,报表制作人员可以集中精力思考如何降低线损、网损,提供供电可靠性、提高经济效益。另一方面,可以对报表制作工作进行规范化管理,提高调度部门现代化管理水平。

上一篇:网页设计的小技巧 下一篇:用Rijndael加密.NET数据库连接字符串