📄 200604241150575.html
字号:
<html>
<head><title>PB</title></head>
<center><h1>PB</h1></center>
<div><P align=right><FONT face=Verdana><FONT color=#f70938><FONT face=黑体><a href="200604112229525.html" tppabs="http://www.itisedu.com/phrase/200604112229525.html" target="_new">中科永联</a>高级技术培训中心(</FONT><FONT face=黑体>www.itisedu.com</FONT><FONT face=黑体>)<IMG src="20064415625932.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/20064415625932.jpg" border=0></FONT></FONT></FONT></P>
<P><FONT face=Verdana> <a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604041117205.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604041117205.html'" tppabs="http://www.itisedu.com/phrase/200604041117205.html" target="_new">PowerBuilder</a>(<FONT face=Verdana><a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604241150045.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604241150045.html'" tppabs="http://www.itisedu.com/phrase/200604241150045.html" target="_new">Power Builder</a>,<a href="200604241150575.html" tppabs="http://www.itisedu.com/phrase/200604241150575.html" target="_new">PB</a>)</FONT>是著名的<a href="200602271218062.html" tppabs="http://www.itisedu.com/phrase/200602271218062.html" target="_new">数据库</a>应用开发工具生产厂商PowerSoft公司推出的产品(PowerSoft现已被数据库厂商<a href="200604040934365.html" tppabs="http://www.itisedu.com/phrase/200604040934365.html" target="_new">Sybase</a>所收购),它完全按照客户机/服务器<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603122156385.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603122156385.html'" tppabs="http://www.itisedu.com/phrase/200603122156385.html" target="_new">体系结构</a>研制设计,在客户机/服务器结构中,它使用在客户机中,作为数据库应用<a href="200604232224305.html" tppabs="http://www.itisedu.com/phrase/200604232224305.html" target="_new">程序</a>的开发工具而存在。由于PowerBuilder采用了<a href="200603101726185.html" tppabs="http://www.itisedu.com/phrase/200603101726185.html" target="_new">面向对象</a>和可视化技术,提供可视化的应用开发环境,使得我们利用PowerBuilder,可以方便快捷地开发出利用后台服务器中的数据和<a href="200603011033425.html" tppabs="http://www.itisedu.com/phrase/200603011033425.html" target="_new">数据库管理系统</a>的数据库应用程序。 </FONT></P>
<P><FONT face=Verdana> 在当前,网络技术迅速发展,随之发展的还有OLE,OCX,跨平台等技术,而在PowerBuilder的最新版中提供了对这些技术的全面支持。在数据库开发工具领域,PowerBuilder是其中非常优秀的一个,利用它我们可以开发出功能强大的数据库应用程序。</FONT></P>
<P><FONT face=Verdana> PowerBuilder提供了对目前流行的大多数关系数据库管理系统的支持,由于在PowerBuilder的应用程序中对数据库访问的部分一般采用国际化标准数据库查询语言<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604022014515.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604022014515.html'" tppabs="http://www.itisedu.com/phrase/200604022014515.html" target="_new">SQL</a>,使得用PowerBuilder开发的应用程序可以不做修改或者只做少量的修改就可以在不同的后台数据库管理系统上使用。也就是说用PowerBuilder开发的应用程序是独立于服务器上的数据库。</FONT></P>
<P><FONT face=Verdana><STRONG>一、PowerBuilder的特点</STRONG> </FONT></P>
<P><FONT face=Verdana> PowerBuilder提供了对目前流行的大多数关系数据库管理系统的支持,由于在PowerBuilder的应用程序中对数据库访问的部分一般采用国际化标准数据库查询语言SQL,使得用PowerBuilder开发的应用程序可以不做修改或者只做少量的修改就可以在不同的后台数据库管理系统上使用。也就是说用PowerBuilder开发的应用程序是独立于服务器上的数据库管理系统的。</FONT></P>
<P><FONT face=Verdana> 和大多数的WINDOWS应用程序一样,PowerBuilder也是事件驱动工作方式。在这种工作方式中,程序的运行没有固定的流程,程序中的代码也是为各种可能发生的事件编写的,当程序开始运行之后,它就可以接受来自系统,用户或者其它应用程序触发的事件,然后执行相应的事件代码。事件驱动的工作方式与面向<a href="200603090845215.html" tppabs="http://www.itisedu.com/phrase/200603090845215.html" target="_new">对象</a>技术是紧密相关的,在PowerBuilder应用程序中,接受发生的事件的往往就是程序界面中的各种可视化对象。</FONT></P>
<P><FONT face=Verdana> PowerBuilder是一种面向对象的开发工具,各种WINDOWS应用程序中常见的窗口、菜单、控件等在PowerBuilder中都是一个个的对象。在PowerBuilder中我们还可以创建自己的用户对象。特别要指出的是PowerBuilder提供了对<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200602281513385.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200602281513385.html'" tppabs="http://www.itisedu.com/phrase/200602281513385.html" target="_new">面向对象方法</a>中的各种技术的全面支持,我们可以利用面向对象方法中的对象的封装性、继承性、多态性等特点使得我们开发的应用程序具有极大的可重用性和可扩展性,而这一点正是<a href="200602281725525.html" tppabs="http://www.itisedu.com/phrase/200602281725525.html" target="_new">软件工程</a>中对应用程序所提出的重要目标。</FONT></P>
<P><FONT face=Verdana> 在当前,由于网络技术的发展,许多种不同的<a href="200602281634075.html" tppabs="http://www.itisedu.com/phrase/200602281634075.html" target="_new">操作系统</a>平台在INTERNET网上同时被使用,这对开发的应用程序的跨平台性提出了更高的要求,而PowerBuilder就提供了良好的跨平台性,比如在PowerBuilder中,利用WINDOWS平台开发的各种对象可以方便地应用到UNIX平台中,因为PowerBuilder支持对象的跨平台性。这样使得把应用程序从一个平台移到另一个平台变得并不复杂。</FONT></P>
<P><FONT face=Verdana> 为了给用户提供各个方面的支持,PowerBuilder具有自己的编程语言POWERSCRIPT,这个语言除了提供基本的流程控制语句,还提供了几百个函数来操纵各种对象和提供诸如DDE,OLE等方面的支持。此外我们还可以定义自己的函数,处理特定的事件。学习PowerBuilder时相当一部分的时间就是用来了解和熟悉PowerBuilder提供的各种函数。</FONT></P>
<P><FONT face=Verdana> PowerBuilder一个很大的特点就是提出了数据窗口对象的概念。数据窗口对象也是PowerBuilder中的一种对象<a href="200603051002565.html" tppabs="http://www.itisedu.com/phrase/200603051002565.html" target="_new">类型</a>,与其它对象不同的是数据窗口对象是专门为了访问后台的数据库服务的,在数据窗口对象中我们定义了数据的来源和数据的显示风格,这样在应用程序中我们就可以把精力完全放在程序的运行流程控制上,而不用关心具体数据的来源,因为我们在数据窗口对象中已经定义好了数据的来源。如果需要使用数据库中不同的数据也只要对数据窗口对象进行修改就可以了。特别要指出的是PowerBuilder在数据窗口对象中提供了丰富的数据显示方式,可以满足各种不同的需要。</FONT></P>
<P><FONT face=Verdana> 在PowerBuilder较新的版本中提供了基础<a href="200603090857555.html" tppabs="http://www.itisedu.com/phrase/200603090857555.html" target="_new">类</a>库PFC,它为应用程序的开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发出高质量重用性好的应用程序。真正发挥<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603050951565.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603050951565.html'" tppabs="http://www.itisedu.com/phrase/200603050951565.html" target="_new">面向对象编程</a>的巨大威力。</FONT></P>
<P><FONT face=Verdana> 最后要指出的是PowerBuilder有三个不同的版本,分别为DESKTOP型,PROFESSIONAL型,和ENTERPRISE型,DESKTOP型是为个人使用的桌面型应用程序,在这里可以利用PowerBuilder内置的数据库管理系统SYBASE SQL ANYWHERE来创建和使用本地数据库,为个人的应用服务;PROFESSIONAL型的PowerBuilder最重要的一点就是提供了对MICROSOFT <a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604151956245.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604151956245.html'" tppabs="http://www.itisedu.com/phrase/200604151956245.html" target="_new">ODBC</a>(数据库标准连接接口)的支持,在PROFESSIONAL版本中我们就可以使用PowerBuilder的继承,多态等绝大多数特性;在ENTERPRISE版本中最重要的一点就是提供了对开发大型的数据库应用程序的全面的支持,提供了开发大型应用程序的许多辅助的工具,比如C++ <a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231359565.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231359565.html'" tppabs="http://www.itisedu.com/phrase/200604231359565.html" target="_new">CLASS</a> BUILDER等。</FONT></P>
<P><FONT face=Verdana><STRONG>二、PowerBuilder编程技巧</STRONG></FONT></P>
<P><FONT face=Verdana> 1、数据的转储和调入功能的实现<BR> 一个数据处理系统的安全性部分是整个系统的关键部分,对于一些需要长期保存的历史数据来说更是必不可少。对于现代的大型数据库管理系统来说,数据的安全性独立交给<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604022049575.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604022049575.html'" tppabs="http://www.itisedu.com/phrase/200604022049575.html" target="_new">DBA</a>来专门管理,一般的系统较少涉及数据的备份工作。为了减少<a href="200603021438435.html" tppabs="http://www.itisedu.com/phrase/200603021438435.html" target="_new">计算机</a>专业人员的负担,一个好的<a href="200604241249435.html" tppabs="http://www.itisedu.com/phrase/200604241249435.html" target="_new">MIS</a>系统应该提供数据的转储和调入功能,这样对数据库管理系统不太了解的用户也可以进行数据安全方面的处理。PowerBuilder中SaveAs()、ImportFile()两函数可以实现这方面的操作,dwcontrol.SaveAs()提供了多种数据的存储格式,如dBase的DBF格式、以TAB作为分隔符的文本TXT格式、Excel格式、SQLInsert格式、CSV格式。dwcontrol.ImportFile()将数据从各种格式的文本<a href="200602282323195.html" tppabs="http://www.itisedu.com/phrase/200602282323195.html" target="_new">文件</a>中调入数据窗口控制里。</FONT></P>
<P><FONT face=Verdana> 2、简洁美观的数据报表的创建<BR> 一个系统里的报表应该具有一致的风格,报表至少应该具有如下几种项目:报表的标题、报表的日期和时间、报表的页序、报表涉及的对象和条件。PowerBuilder提供了各种类型的数据窗口,报表中主要用到如下几种类型: Free风格,该数据窗口的数据排列,用户可以任意调整,有最大的自由性。Grid风格,以表格的方式显示数据,外观比较工整,美观明了。Graph风格,以图形方式显示数据,有直方格、圆饼图、曲线图、三维立体柱图。Group风格的数据窗口提供了一种对数据进行分组的简便途径,它生成了一个具有分组属性的Tabular风格的数据窗口对象。</FONT></P>
<P><FONT face=Verdana> 3、Mdi窗体技术的应用<BR> 随着Windows系统的出现,图形交互界面得到了用户的喜爱,已成为一种潮流,其中Mdi窗体技术更是吸引人。Mdi窗体,即是多文档交互式窗体,亦叫无<a href="200603061709535.html" tppabs="http://www.itisedu.com/phrase/200603061709535.html" target="_new">模式</a>窗体。这种窗体包括一个Mdi主窗口及多个Mdi子窗口,子窗口只能在<a href="200603061723295.html" tppabs="http://www.itisedu.com/phrase/200603061723295.html" target="_new">框架</a>之内出现和移动,可以同时打开多个Mdi子窗口,但同一时刻只能有一个窗口处于被激活状态,当主窗口关闭时,同时关闭所有子窗口。</FONT></P>
<P><FONT face=Verdana> 4、SQL语句的使用<BR> 在用PowerBuilder编程时经常要使用SQL语句对数据库进行操作,而SQL语言语句在使用中格式要求比较严格。此外,在使用SQL语句之前,要用Connect与数据库相连,并且每一条SQL语句必须以“;”结尾。</FONT></P>
<P><FONT face=Verdana> 5、Datawindow数据窗口<BR> 数据窗口的处理机制首先是根据所需的显示方式将数据源表中的域设计好,在运行时将所要的数据从数据库服务器上下载到客户机上处理,然后将更改后的数据进行提交(Commit)或回滚(Rollback)。这种处理机制大大降低了数据的传输量,减轻了网络的负担,也提高了数据的处理速度。充分利用数据窗口的特点,可达到事半功倍的效果,但是如果有些问题不加注意就会出现意想不到的错误。</FONT></P>
<P><FONT face=Verdana> (1). AcceptText()函数<BR> AcceptText()函数的功能是将数据窗口当前编辑的数据转移到数据窗口的缓冲区中。程序通常在关闭窗口及其他情况下判断是否改变了当前数据。如果已改变数据,应提示用户保存。这就杜绝了用户在偶然的情况下丢失更改数据的现象。一般用ModifiedCount和DeletedCount函数判断数据是否改变。<BR> PB在处理数据窗口时,对应开辟了四个数据缓冲区,分别为Primary Buffer、Deleted Buffer、Filter Buffer、SortBuffer,其中Deleted Buffer存放被删除的记录,Filter Buffer存放被过滤的记录,Sort Buffer存放排序的记录,Primary Buffer存放其他记录。函数ModifiedCount从Primary and Filter Buffers中取数据进行判断,DeletedCount则从Deleted Buffer中取数据进行判断。<BR> PB在接受用户输入时设置了一个浮动编辑框,用户输入或更改的内容并不直接进入Primary Buffer,而是在用户输入完后进入下一个域时,PB首先对它进行有效性检测,通过后转入Primary Buffer。如果只改变一项数据就关闭窗口则相关数据并没有进入Primary Buffer,系统判断ModifiedCount()为0,所以不会提示保存数据。用AcceptText()函数就可以将浮动编辑框中的数据转入缓冲区中,在相应的程序段前加上Accepttext(),问题就解决了。<BR> (2).messagebox()函数<BR> messagebox()是Powerscript中用得最多的函数之一,常用于向用户显示出错、警告及其它信息,并且在开发过程中常用它显示程序状态和重要变量的取值,它在程序运行过程中,在屏幕上显示一个窗口,只有用户在响应该窗口后,程序才能继续运行下去,因此,这个函数在程序的开发调试过程中非常有用,可以用来判断程序在哪个地方出错。</FONT></P>
<P><FONT face=Verdana> 6、数据的突出显示<BR> 程序运行中,用户希望显示的数据具有明显的区分,数据窗口应该能使用户很快找到他们想要的信息,以颜色区分既满足用户的习惯,又不占系统资源,实现起来也很简单。以学生管理为例,要求成绩低于60分的以红色显示,其他不变。方法是:在数据窗口中对应成绩的列(例如‘/cj’)上双击鼠标左键或单击鼠标右键,弹出Column <a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231338435.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231338435.html'" tppabs="http://www.itisedu.com/phrase/200604231338435.html" target="_new">Object</a>对话框,选取Expressions页,在Color后的框中输入:if(cj<60,rgb(255,0,0),rgb(192,192,192))此句表示当成绩小于60则显红色,否则灰色显示。<BR> IF语句只可能有两种选择,如果要更多的条件判断则必须用CASE语句,例如成绩大于等于90用蓝色,小于60用红色,其他用绿色则应该用以下语句:Case(cj WHEN IS >=90 THEN RGB(0,0,255) WHEN IS < 60 THEN RGB(255,0,0) ELSE RGB(0,255,0))。<BR> 图形是最好的说明语言,为了更好体现数据的直观性,可以采用条件位图的方法。之所以称为条件位图,是因为它随数据的性质而决定是否显示,用可以在上述的成绩管理数据窗口的前面加上一个图片。双击位图,弹出Picture Object对话框,选Expressions页,在Visible编辑框写入if(xb=”0”,1,0),此句的意义为当性别为0(女)时蝴蝶出现,否则蝴蝶消失,程序运行起来相当直观,充分利用列的属性使用户的界面更加友善、漂亮。</FONT></P>
<P><FONT face=Verdana> 7、数据的保护<BR> 有很多情况需要对数据进行保护(即只能显示而不允许修改),学生查询成绩时就是这种情况。进行数据保护的方法有很多,第一种是双击要保护的列,弹出Column Object,选取Edit页,将Display Only框选中;第二种将要保护的列的TabOrder置0,则此列得不到焦点,当然就无从修改;第三种是从根本作起,选取Rows菜单,再选取Update Properties,弹出Specify Update Properties对话框,将Allow Updates设为空,这样即使用户更改了也无法更新数据库,使更改毫无意义。</FONT></P>
<P><FONT face=Verdana> 8、数据窗口的多表更新<BR> 在处理数据时,经常需要将几个表中的数据放入一个数据窗口中进行处理。一般情况下多表数据源的数据窗口只能用于数据的检索,而不能更新。想要更新数据则采用的方法为:创建数据窗口(将各个表的主键包括进去),修改Taborder使数据能被更改,然后对应各个表创建相应的隐含数据窗口,隐含数据窗口的数据项和主数据窗口中对应表的数据项应完全一致。存盘时将主数据窗口中的数据拷贝到相应的隐含数据窗口中去,逐个保存各隐含数据窗口中的数据即可。由此看来,第二种方法更容易理解和接受,实现起来也很简单。</FONT></P>
<P><FONT face=Verdana><FONT face=Verdana><STRONG>三、PowerBuilder 入门</STRONG> </FONT></FONT></P>
<P><FONT face=Verdana> 创建新的数据库</FONT></P>
<P><FONT face=Verdana> 为了使您尽快了解PowerBuilder的基本工作原理和编程环境,我们以一个完整的数据库应用程序的开发为例,通过对其开发过程的详细介绍,让您对PowerBuilder有一个基本的认识,为以后的深入学习打基础。</FONT></P>
<P><FONT face=Verdana> 数据库应用程序的操作对象是数据库里的数据,应用程序的目的就是给用户提供一个良好的界面,使得用户能够方便有效地使用数据库中的数据,可见数据库是应用程序工作的基础,所以我们就先了解数据库的创建。</FONT></P>
<P><FONT face=Verdana> PowerBuilder作为一种数据库应用程序的开发工具,一般访问的是后台服务器上的大型数据库。但是PowerBuilder自身也带有本地的数据库管理系统SYBASE SQL ANYWHERE,利用它我们可以创建本地的数据库,由于利用ODBC接口来实现应用程序和远程数据库或本地数据库的连接在操作上并没有太大的区别,下面我们利用PowerBuilder自带的数据库管理系统SYBASE SQL ANYWHERE来创建本地数据库。</FONT></P>
<P><FONT face=Verdana> 双击屏幕上的PowerBuilder 5.0图标,就可以启动PowerBuilder,图2-1显示的就是PowerBuilder的初始界面,可以看出,PowerBuilder的界面同其它WINDOWS 应用程序的界面是类似的,也是由菜单、工具条、工作区和状态条等部件组成。PowerBuilder工具条上的一个个图标被称为画板按钮,按下这些按钮可以打开相应的画板。利用这些画板我们可以创建各种对象,应用到PowerBuilder开发的应用程序中去。如果你对某个画板按钮的功能不太清楚,将鼠标放在这个按钮上不动,系统会在画板按钮的旁边显示一条简短的语句,说明此画板按钮的功能,另外也可以从按钮上的图标来识别它的功能。</FONT></P><FONT face=Verdana>
<P align=center><IMG src="200644111856115.gif" tppabs="http://www.itisedu.com/manage/Upload/image/200644111856115.gif" border=0><BR>图 2-1</P>
<P><BR>2.1.1 创建新的数据库 <BR>创建一个新的数据库的过程如下:</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -