139南II=科技2008t5 ̄1期 网络纵横 Powe rB u i l d e r中利用O L E技术实现与E xce l的通信 靳小红 杨运峰 (河南省新乡广播电税大学1 摘要文章阐述了如何使用oLE技术实现PowerBuilder9 0应用程序与Exc e】2003的通信,通过实例说明怎样把存储在数据库中的 数据信息传递 ̄/jExcel电子表格中 关键词OLE自动化Excel2003 PowerBuilder9 0 PowerBuilderO.0(以下简称PB9.0)是Sybase公二J推出的面向对象 属性没鼍浯法格式为:OLE变量名.f服务器限定浏】属性名。 数据库应用开发工具。PB9.1)除r能够设计传统的高性能、基于客户 机,胃艮务器(ClienffSer ̄。er,体系结构的应用系统外,也能够方便地构 造和实现分布式系统。PB9.0以其功能强大、使用方便的数据窗口对 象而著称,利用数据窗口对象可以方便地制作各种打印报表。 Excel是微软公司Office)/、公系列工具中一个出色的电子表格工具。如 果能把PB9.0n崩程序读取的数据动态制作成一张电子表格,那么生 成的电子表格报表就会随着数据库中信息的改变而改变,并通过 Excel对报表进行编辑和打印。 1 OLE自动化 OLE自动化是应用于不浏应用程序之】 进行通信的一个标准。 OLEI ̄动化的工作方式是:通过0LE服务器应用程序IS]OLE客户机应 用程序提供可供其调用的0LE自动化对象类型,OLE客户机通过引用 这些对象实现对0LE月艮务器的调用,然后通过没置对象的属性和使用 对象的方法操纵0LE月艮务器应用程序,完成两者之恻的通汛。 2实现方法 实现OLEI ̄1动化的几个步骤可以在一个事件脚本中完成。 2 1建立一个与Excel通信的Object OLEObject Excel_server Excel_server=CREATE OLEO ̄ect 2.2与服务器应用程序连接 PB9.0提供的函数connectToNewObject用来在一个OLEObject对 象与OLE月陉务器建立连接,连接一个对象tg ̄,t启动了响应服务器,该 函数语法格式为:oleobject.conneetToNewObject(classname) 。 (1)参数: oleobject:OLEO ̄ect对象变量名,新的OLES ̄I"象将连接到该变 量上。 Classname:string类型,其值是OLE类名,它指名了0LE服务器 应用程序以及该服务器能够通过OLE操作的对象类型。 (2)返 值: Integer。函数执行成功时返101o,发生错误时返回下述值之一: 一1无效调用。 一2未找到指定的类。 一3不能创建对象。 一4不能连接到对象。 一9其他错误 (3)用法: 根据使用0LE服务器的对象类型,利用ConnectToNewObject( ) 函数建立连接,根据返回参数判断0LE月陉务器连接是否成功,对于 ofifce2(X)3套件中的应用程序提供如下儿种常用的服务器标 : “Word Application’’ “Word.Document’’ “Excel Application’’ “Exce1.Worksheet’’ “PowerPoint.Application” 例如调用ConnectToNewObject()函数创建新的Excel对象并连接 到该对象上代码为: Excel—server connectToNewObiect (“exce1.application”) 2.3使用服务器应用程序的属性和函数操纵这个对象 OLEO ̄ect对象和OLE服务器建立连接后,就可以没置属性并调 用由oLE服务器支持的函数。 例如:Excel_server.ActiveSheet.Cells(i,j).value=24 调用服务器的函数语法格式为:OLE变量名、f服务器限定测)函 数名((参数】)。 例如:Excel_server.ActiveWorkbook.SaveAs(“d:\pbexce1.xls”) 2.4关闭与OLE对象的连接并清除变量 当应用程序中的OLE对象已经结束时,必须关闭OLE对象与服务 器应用程序的连接,并且释放OLE对象所占的f勺存空间。所用函数为 DisconnectObjecf),语法格式为:oleobject.Disconnect0 ect() 。 (1)参数 oleobject:OLEO ̄ect对象变量名。 (2)返回值 Integer。函数执行成功时返回0,发生错误时返回下述值之一: 一1无效渊用 一9其他错炭。 3编程实例 3 1界面设计 实例界面如图l所示,其主要控件见表1 , 图1实倒界面 袁1实例主要控件 3.2主要事件 (1)应用的0pen事件代码” sqlca dbms=“odbc” 臌据源名称为student sqlca.dbparm=”connectstring='dsn=student;uid=dba;pwd=sql… connect; 惟接数据库 open(w stu),,主窗口名称为w_stn (2)主窗El w._stu的open事件代码 dw1.settransobject(sqlca) dw_1.retrieve0 (3腔件cb—close的clicked事件代码 Close(parent) (4)控件cb_excel的clicked事件代码 oleobject excel server integer excelok,]]colnum,llrownum string lscolname,lsvalue integer i,J,k excelserver=create oleobject ii越 Excel if excelserver c0nnectt0new0bject(“exce1.application )<>()then messagebox(“ole错误“,“OLE无法连接“) rentrll endif //得到数据窗口数据的列数 llcolnum=long(dw——1 object datawindow.column.count) ,/得到数据窗口数据的行数 维普资讯 http://www.cqvip.com 1;o9 肉拓科技200 技术创新 Y=bO+blxI+b2 x: 另外,对于回归模型,还需要进行显著性检验。检验时,需要计 用最小二乘法来求上式中的待定系数b。,b., 。若记 算以下两个平方和,然后查盼布表。 a=Z(yf—bo—blXn—bzXi2) 2 t=l 回归平方和:S =∑6 ,残差平方和: , 一S j=t 贝l使得Q达到最小,bo,b ,b 必须满足下列方程: 式中 =∑( 一 ) 0a n i=1 一0bo 2 Z(y 一bo-b ̄xi】-b2t2)=O j=l .. b t 定义 二 (i=l,2;m=2)式中,l”为正规方程系数 aQ ^ 一2 Z(y,一 一6l ,l-b2 2)Xil;o 矩阵的逆矩阵的第i个主对角元。汁算出 ,给定检验水平 ,查盼 1 i=1 布表得到临界值 。如果 > ,则对应的参数对抗压强度的影响是 Xil-b2x/2 =o 显著的。否则该参数对抗压强度的影响是不显著的。 = 砉c根据岩石力学实验和测井解释的结果,岩石抗压强度El"与地层 f ̄_-t化简整理,则b ,b ,b。必须满足下列方程的解。 深度h、声波时差△k的基本数据见表l,通过回归计算,最终得到岩 I illb|+L2b il y 石抗压强度El" 的计算公式为: l21b1+l控b2=l 仃 :-0.I678—1630907 _002 ,+OI3898×1O ^ ∞3 bo--y-b|x|~b2x 通过检测可知(见表1),模型误差最大范围也只达到1.5.04%。 式中. 3结论与建议 一 Y=二∑Y (1)由于地层的复杂性及其非均质性,在选取不同深度地层的 测井资料时,对所取的资料点应依据实际情况取舍;为避免误差较 1 n (.『= '2) 大,应尽量多取些资料点,选取正确的对比资料点是建立正确模型的 , 前提。 (2)岩石抗压强度与地层深度、声波时差及孔隙度等参数有比 l =∑( 一 )( 一 ) 较密切的关系。建立计算岩石抗压强度的回归模型时,应尽量建立岩 石抗压强度与多个影响参数之间的多元回归模型。 l =∑( )(), ~ ) ( =l,2) (3)本回归建立的岩石抗压模型,其计算值与真实测量值之问 的误差较小。针对南海流花油田的岩石抗压强度的预测,其精确度较 高,理论与方法具有借鉴作用。 上述方程的前两个方程为二阶正规方程。正规方程的系数矩阵 为: LL: ,驭::=( )2xz=I乏,“: ,/1 2I 参考文献 (1】王德新,吕从容.油井中后期出砂预测及防砂对策Ⅱ】、石油钻采 工艺。1997,19(3):81—84 未知参数与常数项分别记为: (2】王渊,李兆敏,王德兴等岩石抗压强度回归模型的建立【I】.断 B=( ,b2) ,L =/ly l2 ) 块油气田。2005,12(2):17—2() 【3】万仁溥现代完井-T--; ̄[M】.北京:石油工业出版社,1996.39~48 于是正规方程为LB=L ̄ 【4J章成广,李雏彦。樊小意等.用全波列测井资料预测地层破裂压 由此可以得到回归系数B=L~L 力的应用研究【I】.工程地球物理学报。2004,1(2) 120~124 于是汁算b 、 得出 【5】楼一珊,金业权编著、岩石力学与石油工程【M1.北京:石油工 (6。,b ) =L Ly即:( ,b2)=(L Ly) 业出版社.2006 102~103 作者简介付在国(1983-),长江大学石油工程学院助教(学士), 其中 一∑_』 主要从事油气储运工程教学与研究工作。 j=l (收稿日期:2007・11・O1) (接139页)I1_rownum=dw-1.rowcountO+1 //断 ̄-OLE连矮 exceLserver workbooks.add excel server,di ̄onnectobjectO f0r i=l to IIcolnum —destroy excel—server//清除变量excel—server 俯到标题头的名字 本实例通过OLE自动化,实现了PB9、0应用程序与Excel2003的服 Is_colname=dw—l、describe('#'+string(i)+".name”)+.._t Isvalue=dw务器的通信。用同样的方法可以实现PB9.0与Word、PowerPoint的通 —_1.describe(Is_colname+”.text”) ,,把标题写入电子表格的第一行 信。在实际应用中,可以对本实例的相应代码进行移植,即可应用到 exceI server.activesheet.cells(1,i).value=ls_value 其他的系统中。运用oLE技术,在开发新的应用程序时可以“借用” next 现成的应用程序的部分或全部功能,从而大大减轻开发的工作量,缩 胂 数据窗口中所有记录写入电子表格相应的单元格中 短开发周期,使开发工作事半功倍。 f0ri=-2 to IIrownum _forj=l toII_colenm dw—llscrolltorow(i—l】 参考文献 dw【1】李超PowerBuilder8.o编程基础【M J_北京:清华大学出版社。 —1.setcolumn(j) lsvalue=dw20()3,203-301 __1.gettextO excel—server.activeshcet.cells(i,j),value=Is—value (2】郑阿奇.PowerBuilder ̄用教程【M】北京:电子工业出版社, next 20()4.163—169 next (3】孙直权,张涛,邵亮等PowerBuilder8.0进阶篇(n .北京:清华 excel_server.application visible=true 大学出版社,2002。234—256 //保存新建的文件 作者简介靳小红(1973一),女,新乡广播电视大学讲师,主要从 excel—server.activeworkbook.saveas(”d:、pbexcel xls”) 事计算杌程序设计研究。 (收稿日期:2()()7・09・29)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务