Power Builder 4.0快速入门 华亮 1997-01-01   PowerBuilder是目前广泛使用于客户/服务器体系结构下的一种图形化应用程序开发工具,是一种面向对象的、具有可视图形界面的、快速的交互式开发工具。对单机用户来说,同样可以使用它作为开发环境,来建立自己的各种应用程序。而且它提供对多种常用数据库的支持、类似于 Windows的图形用户界面、良好的可移植性等特性都深受广大开发人员的喜爱,因此迅速占领市场,目前几乎已发展成为前端工具事实上的工业标准。为帮助广大开发人员尽快掌握PowerBuilder基础知识,下面以目前最流行的Windows 3.x下、PB 4.0版本进行介绍。 #2  一、PowerBuilder开发工具简介   PowerBuilder是美国著名的数据库应用开发工具生产厂家Powersoft公司于九十年代初推出的,目前国内用户使用的最高版本为该公司九六年六月推出的PB5.0版。随着PowerBuilder的不断发展和完善,其功能和特点更加适合开发人员的需要,主要表现在以下几个方面:   1.专业的客户/服务器开发工具   2.面向对象的快速开发   3.通过专用的接口或通用的ODBC接口,同时支持多种关系数据库系统,如xbase系列、Sybase、Informix、Oracle、SQLBase等   4.独有的功能强大的数据窗口对象   5.丰富的数据源和数据显示样式及图形支持   7.强有力的PowerScript编程语言、内置数据库   8.跨平台支持等   PowerBuilder的安装需要至少20MB硬盘空间,还需10-30MB用于应用程序的开发,建议选用内存不少于8M、带光驱的 486以上计算机进行安装。利用光盘安装非常容易,先进入 Windows 3.x,然后执行程序管理器文件下拉菜单的运行命令,在运行对话框执行PowerBuilder的Setup.exe文件即可。   值得注意的是,在安装数据库系统支持时,需用户就自己使用的数据库系统进行选装,其它工作用户可选择使用默认值进行,安装工作结束后,自动生成 Windows下的PowerBuilder 4.0应用程序组。 #2  二、PowerBuilder开发环境 #3  1.功能画板介绍   从 Windows 3.x下进入PowerBuilder后,PowerBuilder打开它的主窗口,里面包含一个菜单栏和一个画板(Power)栏(见图1),可以单击画板栏上的某个图标或从菜单里选取一个菜 单项来执行相应的任务,画板栏本身可以被定制。 #3  2.功能画板的使用   应用程序对象(Appl):打开或建立一个应用程序对象   窗口对象(Window):建立或修改窗口对象 Shift+F2   菜单对象(Menu):建立或修改菜单对象 Shift+F3   数据窗口对象(DataWnd):建立或修改数据窗口对象 Shift+F4   结构定义(Struct):定义分类相关变量 Shift+F5   性能优化(Prefs):改变系统性能参数   帮助(Help):快速获取系统帮助 Shift+F1   数据库(Database):维护数据库 Shift+F7   数据管道(Pipeline):拷贝数据库   查询(Query):定义SQL SELECT语句 Shift+F8   函数定义(Func):用户定义的全局函数 SHift+F9   项目(Project):建立可执行的版本   库管理(Library):建立、删除、管理库 Shift+F10   用户对象(User Obj):用户自己建立的控制对象 Shift+F11   运行(Run):从开发环境运行应用程序 Ctrl+R   调试(Debug):调试当前应用 #3  3.DOS 文件编辑器的使用   PB提供了一个文字编辑器,用来浏览和修改任何文本文件,如INI、SQL文件等。在PowerBuilder里的任何位置按 Shift+F6键,出现“DOS File Open”窗口,指定想要编辑的文件后打开DOS文件编辑器窗口,该编辑器的编辑功能与Windows下书写器的功能相同。   4.构造一个简单应用程序的步骤   (1)创建应用对象   建立新的应用时必须先执行该步骤   (2)创建数据库表   要在应用程序中存取数据时必须有该步骤   (3)创建窗口   窗口里可放置各种控件并编制脚本来指定响应事件   (4)创建数据窗口对象   用于对数据库进行操纵   (5)在窗口中放置数据窗控件    使用该控件关联窗口与数据窗口,实现数据库的操纵   (6)创建菜单   窗口里一般包含菜单栏、下拉菜单和级联菜单   (7)使菜单与窗口关联   将菜单供窗口使用   (8)建造可执行文件   生成可执行文件,脱离PowerBuilder环境运行 #3  5.联机帮助的使用   PowerBuilder提供了以下几种用户获取帮助的方法:   .按F1键   .使用Help菜单   .使用Help画板 #3  6.性能调整与优化   PowerBuilder的性能调整与优化可以使用优化画板或使用编辑器改变PB.INI文件进行。 #2  三、PowerBuilder应用基础   (一)PowerScript基础 #3  1.变量与标识符   PowerScript 的名称规则适合于所有项目,可归纳为:以字母开头的任意字母、数字、-、_、$、#、% 组成的长度小于40的字符串,字母不区分大小写,但在字符串中不能含有空格。 #3  2.给脚本程序加注释   (1)将双斜杠(//)加在需注释的内容前可注释双斜杠至行尾的所有内容。   (2)用斜杠与星号结合(/*......*/)注释使用它们包含的一行或多行。 #3  3.PowerScript变量和数据类型   变量用于存放数据的值,在使用变量前必须对变量进行定义,PowerScript 变量可以分为全局变量(Global Variables)、实例变量(Instance Variables)、共享变量(Shared Variables)和局部变量(Local Variables) 四种类型,对前三者的定义通过与变量有关的对象画板的Declare菜单选择相应的类型来定义,局部变量只能在脚本程序中定义并在定义它的脚本程序中使用。   PowerScript提供了三种数据类型:标准型、系统型和计算型。   标准数据类型:   Blob:大二进制对象,文本、图像等   Boolean:布尔型   Character(Char):单个ASCII字符   Date:日期型,包括日(dd)、月(mm)、年(yyyy)   DateTime:日期型,包括日、月、年和时间   Decimal(Dec):带符号十进行数,最多18位数,小数点位置不限   Double:双精度浮点数   Integer(Int):整数   Long:长整数   Real:实数   String:任意长度ASCII字符集,最多不超过6000   Time:时间,含时、分、秒及几分之一秒   Unsigned Integer(UINT):无符号整数   Unsigned Long(ULong):无符号长整数   系统对象数据类型:   在PowerBuilder环境中,每一个不同种类的对象代表一种数据类型,任何内部定义的对象或控制都可用来作为变量的数据类型。   计算数据类型   与其它数据类型不同,该数据类型常在函数调用中作为自变量传递,并且都有一组有效值,且它们总是用感叹号结尾(!)。 #3  4.PowerScript操作符   PowerScript 支持三种类型的操作符:算术运算操作符、关系运算操作符、逻辑运算操作符,列表如下:   算术运算操作符:   操作符  用途   +    加   -    减   *    乘   /    除   ^    取幂   关系运算操作符:   操作符  用途   =    等   >    大于   <    小于   >=   大于或等于   <=   小于或等于   <>   不等于   逻辑运算操作符:   操作符  用途   AND  逻辑与   OR   逻辑或   NOT  逻辑非   在PowerScript中使用续行符(&)来延续一行程序。 #3  5.PowerScript语句   具有实践经验的用户会发现,许多语句是相似的,甚至与其它编程语言相同,现将常用PowerScript语句罗列如下:   条件控制语句:   (1)IF/THEN 语句   IF 条件 THEN 语句1   ELSE 语句2   END IF   (2)CHOOSE/CASE语句   CHOOSE CASE 变量   CASE 值   语句1   .   .   .   END CHOOSE   循环控制语句:   (1)FOR/NEXT 语句   FOR 变量 = 值1TO值2  {STEP 值}   语句.....   NEXT   (2)DO/LOOP 控制结构   DO UNTIL 条件   语句.....   LOOP   DO WHILE 条件   语句.....   LOOP   DO   语句.....   LOOP UNTIL 条件   DO   语句.....   LOOP WHILE 条件   CONTINUE和EXIT语句:   常用于循环控制结构中,CONTINUE把控制返回到控制结构的开始EXIT 把控制传到下一个控制结构语句。   终止语句(RETURN/HALT)   RETURN终止脚本程序的执行,HALT终止应用程序的执行。 #3  6.PowerScript函数   PowerScript提供了400多个函数,开发人员很容易使用这些函数与事务对象相配合,来操纵对象、处理数字、文本、字符串和日期,进行文件处理、报表打印,用DDE和OLE 2.0进行程序之间的通讯等等。 #3  7.嵌入SQL语句   PowerScript允许将SQL语句嵌入脚本程序中,嵌入的SQL必须用分号(;)结尾。   (二)数据库管理   在应用程序中如果要进行数据的存取,有必要为这个应用建立所需的数据库和表结构,PowerBuilder支持以下数据库概念的操作:   .表和列.行.索引.键(若选用的DBMS支持的话).视图   PowerBuilder使用事务对象来进行对象和数据库之间的通信,在每一次使用数据库之前都必须确保与数据库的成功连接。   用于连接数据库的10个事务属性的描述:   DBMS:(串)DBMS的名字   DataBase:(串)数据库的名字   UserID:(串)数据库用户ID   DBPass:(串)数据库用户口令   ServerName:(串)包含有数据库的服务器名   LogID:(串)数据库用户ID   LogPass:(串)数据库用户口令   Lock:(串)隔离级   AutoCommit:(布尔量)TRUE-在数据库激活后进行交互,否则不执行   DBParm:(串)DBMS说明性参数   用于接收连接数据库事务信息的 5个事务属性的描述:   SQLCode:(长整型)指出最后一次数据库操作的有关信息:0—成功、100─没找到、-1─出错   SQLDBCode:(长整型)包含了DBMS说明性出错码   SQLErrText:(串)包含了DBMS说明性出错信息   SQLNRows:(长整型)指示出受影响的行号   SQLReturnData:(串)DBMS说明性信息   利用这些事务属性值可以建立与数据库的概况文件(Profile),对不同的 DBMS使用的属性值不完全相同,具体可查阅相关接口手册,通常不必为所有属性都提供值。PowerBuilder支持的数据库可以分解成ODBC(开放式数据库互联)数据源和DBMS(数据库管理系统)。   支持的ODBC数据源如下:   .Access 1.x(Microsoft)   .Btrieve 5.x(Microsoft)   .Btrieve 5.x和6.x(INTERSOLV)   .Clipper(INTERSOLV)   .dBASE Ⅲ和Ⅳ(Microsoft)   .dBASE Ⅱ、Ⅲ、Ⅳ和Ⅴ(INTERSOLV)   .Excel 4.x和5.x(Microsoft)   .FoxBASE(INTERSOLV)   .FoxPro 2.x For Dos和For Windows(Microsoft)   .FoxPro(INTERSOLV)   .NetWare SQL(INTERSOLV)   .Paradox 3.x(Microsoft)   .Paradox 3.x和4.x(INTERSOLV Paradox 4 驱动程序)   .Paradox 3.x、4.x and 5.x(INTERSOLV Paradox 5驱动程序)   .Rdb(DEC)   .Text(Microsoft)   .Watcom SQL   支持的DBMS如下:   .ALLBASE/SQL   .DB2(Micro Decisionware Database Gateway interface;Sybase Net-GateWay Interface)   .IBM DRDA   .INFORMIX 4(IN4接口)   .INFORMIX 5(IN5接口)   .ORACLE 6(OR6接口)   .ORACLE 7(OR7接口)   .SQL server   .SQLBase   .Sybase SQL Server System 10   .XDB   管理数据库可以通过以下三条途径来进行:   .使用与PowerBuilder相连的DBMS   .使用PowerBuilder的数据库画板或SQL语句   (三)窗口与控制   窗口代表应用程序与用户之间的主要接口,应用系统的所有对象都是放在窗口上或与窗口建立关联来实现其应用的,窗口画板的工作窗口如下所示(图2):   在窗口工作区中,可以通过增加控制来实现应用程序的相关操作,步骤为:   .点按所需的控制图符或从Controls菜单中选取相应的菜单项   .点按要放置控制的窗口位置   命令按钮(CmdBtn):提供给用户启动所需的动作,须为点按事件定义脚本程序   图形按钮(PctBtn):是一个具有图形的命令按钮   静态文本(StatTxt):提供开发者在窗口上安排文本信息,它一般无脚本程序   单行编辑(SnglEdit):单行文字的输入输出   编辑屏蔽(EditMsk):按预定格式输入文字   多行编辑(MultEdit):多行文字的输入输出   列表框(LstBox):显示可利用的少量被选项   下拉列表框(DrpDwn):显示可利用的较多数量被选项   检查框(ChkBox):在一组状态选中单个或多个   圆按钮(RadBtn):在一组状态选中一个   数据窗口(DataWnd):把数据窗口对象加到窗口上   图像控制(Pict):在窗口中显示(.RLE)或(.BMP)图像   分组框(GrpBox):它无事件控制,只用于将事件分组   用户对象(User Obj):把用户自定义对象加到窗口上   图表(Graph):允许开发者定义图表并将它安排在窗口上   绘图:用于改善窗口的外形,如画直线、矩形、椭圆、圆矩形等   滚动棒(Scroll):安排水平或垂直的滚动棒来协助输入输出数据   OLE 2.0和OLE 2.0:支持的应用程序通信   (四)数据窗口对象   数据窗口是PowerBuilder的精华所在,它允许开发者存取并操纵DBMS中的数据或其它数据源的数据。为了实现它与窗口的关联,开发者必须首先在窗口上放置一个数据窗口控制,然后再把一个数据窗口对象加到该数据窗口控制上来实现。 #3  1.数据源和显示式样   Quick Select:快速选择数据源,数据仅来自于一个表或视图   SQL Select:SQL选择数据源,数据可以来自多个表或视图   Query:查询数据源,使用“查询画板”编写好的 SQL语句   External:外部数据源,数据来自于文本文件   Stored Procedure:存储过程数据源,数据来自存储过程,与DBMS的支持有关   Tabular:制表式样,数据的显示象表格(无表格线)   Freeform:自由格式,可随意显示数据并移动所有内容   Gird:网格格式,数据显示为一个表格(有表格线)   Label:标签格式,数据显示成一个个的标签   N-Up:分栏格式,屏幕被分成几栏显示数据   Group:分组格式,将检索到的数据进行分组显示   Graph:统计图格式,用统计图显示数据   Crosstab:交叉表格式,数据显示为一统计报表   Composite:复合数据窗口格式,将已建好的多个数据窗口放在一起   RichText:丰富文本格式,允许调入.DOC或.RTF文件(PB5.0)   OLE 2.0:OLE 2.0数据窗口式样,允许嵌入OLE对象(PB5.0) #3  2.建立一个新的数据窗口   点按一下数据窗口画板后,进入选择数据窗口(Select DataWindow),按New命令按钮进入新数据窗口(New DataWindow),必须先选择数据源和显示式样,按OK命令按钮打开数据窗口的弹出菜单,选择所需的表、列,在数据窗口画板中使用合适的工具栏,存盘即可建立所需的数据窗口对象(图3)。 #3  3.数据窗口画笔工具栏的使用   预览(Preview):预览已建好的数据窗口中的数据   SQL 选择(Select):修改当前数据窗口对应的SQL SELECT语句   选择对象(Selection):选中数据窗口上放置的对象   文本对象(Text):为数据窗口创建文本对象   计算域(Compute):其它域的计算结果   总计(Sum):为选中的数值型列总计求和   放置列(Column):在当前的数据窗口上放置列   统计图(Graph):在数据窗口中创建统计图   报表(Report):创建报表对象   图像(Picture):在数据窗口上放置一幅图(.BMP、.RLE、.WMF格式)   计算页号(Page):为数据窗口加页标志   当天日期(Today):为数据窗口加上当天日期   货币符号(Currency):用货币符号格式化列或计算域图标   百分符号(Percent):用百分比符号格式化列或计算域图标   清除(Clear):清除选中的对象   绘图:用于修饰窗口的外形,如画直线、矩形、椭圆、圆矩形等 #2  四、使用PowerBuilder 建立简单应用的实例   有了以上的知识,按我们介绍的简单步骤来着手建立应用程序,为简明起见,假定该应用程序只对一个表进行操作。 #2  (一)创建一个新的应用程序   点按一下图 1中的应用程序画板进入选择应用(Select Application)对话框,使用New 按钮用于创建新的应用程序,弹出保存应用(Save Application)对话框,在应用(Applications)框里输入要建立的应用名:example1.pbl,按OK钮保存该应用后返回PowerBuilder应用画板,并打开该应用对象。   在应用画板中,利用应用画板工具栏可以为应用程序定义图标、字体、库包含和应用程序脚本,应用程序的运行总是从这里定义的脚本(Script)文件开始。按脚本工具栏,打开脚本文件,在该文件的最后写入:   //Open(Win_main)   由于窗口Win_main还未建立,在此我们将该行注释掉,以免保存脚本时出错,在以后建立好win_main窗口后,删掉该语句前面的双斜杠即可。 #2  (二)创建数据库表 #3  1.与数据库系统的联结   PowerBuilder提供了对多种数据库的支持,开发者可根据使用的数据库系统,利用事务对象建立一段数据库概况(Profile),实现与数据库系统的联结。   下面给出使用FoxPro关系数据库建立数据库概况文件的实例:   先打开数据库画板,从File菜单选取Connect,从所得的级联菜单选取Setup,点按New命令按钮建立一个新的数据库概况文件。   在Database Profile窗口中输入如下的值:   Profile Name:foxpro   DBMS:ODBC   User ID:   Database Name:c:\fox   点按OK按钮,选取Foxpro Files数据源,再按OK按钮就为FOXPRO建立一个新的数据库概况文件。 #3  2.建立表   要建立一个新表,除利用FoxPro的建库命令外,用数据库画板的Create Table工具栏也可实现,用这两种方法创建的表,PowerBuilder均能对其进行操作。   值得注意的是,最好为表定义题头(Header)和标签(Label) ,对于已建好的表可使用Alter Table工具栏来增加或改变题头和标签。   下面是 gjkp_1 表的创建实例(图4):   说明:   表名:(gjkp_1)   字段名:  gjth_1 char 16工具图号  gjmc_1 char 12工具名称  gjdj_1 number 工具单位  lpjb_1 char 1 领频级别  zgcb_1 number 最高储备  zdcb_1 number 最低储备  jcrq_1 date  结存日期  jcsl_1 number结存数量   并为gjth_1建立唯一索引。 #2  (三)创建一个数据窗口对象   数据窗口对象是体现PowerBuilder强大功能的最重要的特征之一,它可用于联结数据库、获取记录、以各种风格显示数据和更新数据库。   按以下步骤为gjkp_1表建立数据窗口对象d_gjkp:   1.单击画板栏(图1)上的数据窗口画板(Data Window Painter)图标,此时数据窗口画板打开,屏幕上弹出Select DataWindow对话框。   2.单击New按钮,出现New DataWindow对话框。   3.从组框Data Source(数据源)里选中Quick Select,从组框Presentation Style(数据显示式样)里选中Gird。   4.单击Ok按钮,此时屏幕上弹出Quick Select(快速选取)对话框,在Tables框里自动列出了当前数据库里的所有表。   5.单击Tables框里的gjkp_1,此时表gjkp_1被打开,并且在Columns框里列出了它的所有表列。   6.点按Add All(增加所有列,也可用鼠标单击Column框里的列来按列选取)。   7.单击Ok按钮或者按Enter键,此时数据窗口中显示已建立好的数据窗口对象。   8.从File菜单选中Save项,屏幕上弹出Save DataWindow对话框。   9.在DataWindow框里输入数据窗口对象的名字:d_gjkp,点按Ok按钮或按Enter键保存数据窗口对象。 #2  (四)创建一个窗口   窗口是用户和PowerBuilder应用程序之间主要的交互界面,常用来显示信息、请求用户输入以及响应鼠标或键盘动作。   按以下步骤建立窗口对象 win_main:   1.单击画板栏(图 1)上的窗口画板(Window Painter)图标,此时窗口画板打开,屏幕上弹出Select Window对话框。   2.单击 New按钮,此时窗口画板的工作区打开,其中的矩形代表要建造的窗口,然后用鼠标将此矩形拉大至合适位置。   3.单击工具栏上的命令(CmdBtn)图标,或从菜单(Controls)中选 CommandButton项,在窗口中的合适位置放置一个命令按钮。   4.将光标移至该按钮上并双击该按钮,在弹出的 CommandButton对话框中输入按钮名(Name):cb_1和按钮文本(Text):插入,然后单击Ok按钮返回。   5.重复步骤3、4,为该窗口建立命令按钮cb_2(删除)、cb_3(存盘)、cb_4(检索)以及cb_5(关闭)。   6.单击工具栏上的数据窗口控制(DataWnd) 图标,在窗口的合适位置放置一个数据窗口控制对象。   7.双击该数据窗口控制里的任何地方,屏幕上弹出 Select DataWindow对话框,选取已建立好的数据窗口对象d_gjkp,单击Ok键,在紧接着弹出的 DataWindow d_gjkp对话框里,改变数据窗口控制的属性,选中HScroll Bar和VScroll Bar属性。   8.为上面建立的 5个命令按钮增添 clicked控制脚本文件。将光标移到命令按钮上,然后单击鼠标右键,在有关该按钮的弹出菜单中单击Script菜单项,为该命令按钮的clicked控制事件输入脚本文件,然后按File菜单的Return返回。   cb_1:dw_1.InsertRow(0)   cb_2:dw_1.DeleteRow(0)   cb_3:IF Update(dw_1)=1 THEN         Commit;         ELSE         Rollback;         END IF   cb_4:dw_1.Retrieve()   cb_5:Close(Parent)   9.将光标移到窗口任一位置,点按鼠标右键,单击Script菜单项,为该窗口的打开事件(Open)输入脚本文件:     Connect     SetTransObject(dw_1,SQLCA)     10.保存该窗口,并输入窗口名win_main(图5)。 #2  (五)执行应用   完成以上几个步骤后,点按运行(Run) 画板就可正确执行我们建立的简单应用,在这个应用中,可以实现对表的插入、删除、修改、检索等基本操作。   PowerBuilder是一个庞大的系统,建议大家边学边用,充分利用PowerBuilder提供的大量例程进行学习,可以很快取得进步,相信通过一段时间的学习和使用,你一定会对PowerBuilder爱不释手,并选定它作为你的开发工具。