您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > PB教程第九章数据窗口与数据库
9.1简介在前面的内容当中,我们介绍了有关数据窗口的基本概念、功能和方法,下面我们将把使用数据窗口的一些高级技术介绍给大家。这一章不需读者自己动手,因为需要用到很多的数据表格,这里没法都提供给读者,所以这一章只需要读者看明白就可以了,对于SCRIPT中的语句,要是看不懂可以跳过,会在后面的章节中进行进一步的解答。9.2数据窗口与数据库9.2.1事务对象我们知道事务对象在POWERBUILDER当中占有非常重要的地位,POWERBUILDER的应用程序必须通过事务对象来实现与各种数据库的连接,所以在讨论数据窗口和数据库的关系之前,我们首先来介绍有关事物对象的基本内容。在POWERBUILDER当中,要想对一个数据库进行操作,首先必须建立与这个数据库的连接。在一个POWERBUILDER数据库连接中,事务对象是一个特殊的不可视的对象,其功能就是为POWERBUILDER程序与数据库之间的通信提供一个通信区。事务对象当中定义了POWERBUILDER用来与数据库进行连接的参数。在访问数据库之前,必须先建立一个事务对象,然后给这个事务对象的属性赋以合适的值,才能通过这个事务对象与数据库连接,完成所需的数据库操作。当一个应用程序开始运行时,POWERBUILDER会自动创建一个名为SQLCA的默认全局事务对象。SQLCA是“SQLCOMMUNICATIONSAREA”SQL通信区的缩写。可以在应用程序中使用这个默认的事务对象,也可以定义自己的事务对象。POWERBUILDER提供了四条用来进行事务管理的语句CONNECT:成功的CONNECT语句标志着一个事务的开始。在执行CONNECT语句之前,必须对一个已经存在的事务对象的用以连接DBMS的属性赋以合适的值。DISCONNECT:这个语句标志着中止一个事务。COMMIT:执行COMMIT将提交自该事务开始之后当前事务对数据库已做的所有尚未提交的更新操作。并开始一个新的事务。ROLLBACK:执行ROLLBACK语句之后,当前事务已做的所有更新操作都将被撤消,并开始一个新的事务。9.2.2使用事务对象有两种方法可以为一个数据窗口设置事务对象。使用SETTRANS函数:SETTRANS函数将一个特定的事务对象拷贝到数据窗口控件的内部事务对象当中。在程序使用该函数的时候,数据窗口控件使用自己内部的事务对象并且根据需要自动执行连接与断开连接的操作,如果出现错误,则自动撤消已做的所有更新操作,恢复到事务开始时的状态。当数据窗口要访问数据库的时候,如果执行一个RETRIEVE命令或者UPDATE命令,数据窗口就会发出一个内部CONNECT命令,处理相应的数据访问。数据处理结束后,还会发出一个内部的DISCONNECT命令,断开与数据库的连接。所以如果在程序中使用SETTRANS函数,不需要另外书写CONNECT和DISCONNECT命令。从上面的内容当中,我们可以看出SETTRANS语句的缺陷,那就是,在每次进行数据库访问的时候,都要与数据库建立新的连接,而这种连接会占用相当部分的系统资源。而且在进行数据库访问的时候,用户不能对这个访问过程进行控制。如果使用SETTRANS语句,当数据库连接的数目增大的时候,程序的效率就要受到影响了。使用SETTRANSOBJECT命令:使用这条命令可以为一个数据窗口指定一个事务对象。我们应该按照下面的顺序编写脚本来进行数据库的访问。CONNECTSETTRANSOBJECTRETRIEVE或UPDATECOMMIT或ROLLBACKDISCONNECT这里我们看到了两条新的指令:RETRIEVE和UPDATERETRIEVE指令的功能是在使用SETTRANSOBJECT语句把一个数据窗口和一个事务处理对象连接起来之后,把数据库中的内容检索到数据窗口当中去。它的调用格式是DATAWINDOW.RETRIEVE()如果要访问的数据源是使用SQLSELECT语句产生的,那么在调用RETRIEVE函数的时候必须给出参数值,调用格式如下:DATAWINDOW.RETRIEVE(ARG1,ARG2,RETRIEVE函数中的参数次序要与数据窗口对象中定义的SQLSELECT参数的次序保持一致。POWERBUILDER允许RETRIEVE函数带有多于数据窗口对象在SQLSELECT中定义的原有参数数目的参数,多余的参数将被忽略。利用这个特点,可以设计出能够操作不同数据窗口对象的通用检索。UPDATE指令的功能是在对数据窗口中的数据进行修改之后,需要使用UPDATE函数将所做的修改写回到数据库中去。9.3动态数据窗口9.3.1简介从前面的内容当中,我们知道一个窗口上的数据窗口控件,必须和一个真正的数据窗口对象配合起来才能进行工作。数据窗口对象和数据窗口对象所包含的所有的实体(如文本、图形)都有自己的属性。在程序运行的时候,我们可以通过获取、修改这些属性的方法来对数据窗口对象及其所属实体进行动态的控制,甚至能够动态地建立一个新的数据窗口对象。下面,我们就来介绍动态的操纵数据窗口对象的方法。9.3.2动态创建数据窗口创建数据窗口有两种方法。一种是在POWERBUILDER的数据画板中建立,另一种就是在程序运行的过程中通过执行一段脚本来动态地建立数据窗口。下面我们来介绍这种动态创建的方法。首先打开一个窗口画板。我们看到该窗口上面有一个数据窗口控件(图9-1)。图9-1在该数据窗口上面单击鼠标右键,弹出菜单,选择PROPERTIES属性命令。弹出这个数据窗口控件的属性对话框(图9-2)。图9-2我们可以看到DATAWINDOWSOBJECTNAME一项的内容为空,这说明DW_1这个数据窗口控件的所连接的数据窗口对象为空。关掉这个对话框。单击POWERBAR上面的RUNWINDOW按钮,运行这个程序,我们看到该数据窗口上面并没有任何的显示(图9-3)。图9-2关闭这个程序,回到POWERBUILDER的窗口工作区。在窗口上面单击鼠标右键,弹出菜单。在菜单上选择SCRIPT命令,为该窗口的打开事件编写程序。输入这样一段脚本:STRINGSYNTAX,SQLSTR,ERRMSGSQLSTR=SELECTSOCCER.NAME,SOCCER.AGE,SOCCER.CLUB,SOCCER.NATION&+FROMSOCCERCONNECTUSINGSQLCA;SYNTAX=SQLCA.SYNTAXFROMSQL(SQLSTR,STYLE(TYPE=GRID),ERRMSG)dw_1.CREATE(SYNTAX,ERRMSG)这段程序的意思是把SPSTAR这个表中的关于足球明星的内容显示在DW_1这个数据窗口控件上面。关闭窗口画板工作区。单击POWERBAR上的运行按钮,执行这个程序。我们看到数据窗口中显示了我们需要的信息(图9-4)。图9-49.3.3动态更新数据窗口数据窗口中的内容可以根据用户的需要动态的修改。下面,就给您一个例子。我们在窗口上布置一个新的按钮——“更改”。在新的按钮上面单击鼠标右键,弹出菜单。在菜单上选择PROPERTIES命令,弹出这个按钮的属性定义对话框。将按钮上面的文本设置为“更改”,单击OK按钮,确认修改。如图9-5。图9-5在按钮上面再次单击鼠标右键,弹出菜单,在菜单上面选择SCRIPT命令,开始为这个按钮的CLICKED单击事件编写脚本。我们输入这样一段脚本。STRINGSYNTAX,SQLSTR,ERRMSGSQLSTR=SELECTTENNIS.NAME,TENNIS.AGE,TENNIS.CLUB,TENNIS.NATION&+FROMTENNISCONNECTUSINGSQLCA;SYNTAX=SQLCA.SYNTAXFROMSQL(SQLSTR,STYLE(TYPE=GRID),ERRMSG)dw_1.CREATE(SYNTAX,ERRMSG)dw_1.SetTransObject(SQLCA)dw_1.RETRIEVE()这段脚本的意思是将DW_1这个数据窗口的显示内容从足球明星更改为网球明星。请注意最后的这两行脚本。当我们创建新的数据窗口对象的时候,已经断开了数据窗口控件与事物对象的连接,所以当我们调用CREATE函数之后,还要再次调用SETTRANSOBJECT来重新建立相应的连接。关闭窗口画板的工作区。单击POWERBAR上面的运行按钮,运行这个程序。现在数据窗口中的内容是足球明星的名字。如图9-6。图9-6下面我们单击“更改”按钮,我们看到窗口中的内容已经更改为网球明星的名字了。如图9-7。图9-79.3.4提供查询模式在很多时候用户都希望能够自己设置检索条件来进行数据库的查询工作,所以为用户提供模式查询功能是一个常见而重要的工作。下面我们就介绍如何实现这个功能。我们打开一个预先定制好的窗口。如图5。在“查询模式”按钮上面单击鼠标右键,弹出菜单,选择SCRIPT命令,为这一按钮的单击事件编写程序。输入下面这段脚本:dw_1.Modify(datawindow.querymode=yes)这行脚本的意思是将数据窗口的查询模式设置为允许。关闭这个窗口。在“开始查询”按钮上面单击鼠标右键,弹出菜单,选择SCRIPT命令,为这一按钮的单击事件编写程序。输入下面这段脚本:dw_1.Retrieve()dw_1.Modify(datawindow.querymode=no)这行脚本的意思是命令数据窗口按照用户输入的检索条件进行查询。并且关闭查询模式。关闭这个窗口。关闭窗口画板工作区,然后单击POWERBAR上面的运行按钮,运行这个程序。我们看到数据窗口上面显示了数据库中存储的所有足球明星的资料。如图9-8。图9-8下面我们单击窗口上的查询模式按钮,数据窗口上面的所有数据被清空。下面我们就可以进行检索条件的输入工作了。在窗口中所列出的表列上面输入您要设置的条件。比方说,在国别一栏当中输入意大利,在年龄一栏当中输入25,同一行的检索条件是逻辑“与”的关系,这就表示要求检索数据库中含有的所有年龄小于25岁的意大利球星的名字。我们还可以输入更多的检索条件,比方说,在国别一栏中输入英国,在俱乐部一栏中输入“曼联”,不同的行的检索条件之间是逻辑“或”的关系,所以,前面输入的查询条件的意思就是查询数据库中小于25岁的意大利球星以及曼彻斯特联队的英国球星的资料。按下“开始查询”按钮,我们看到数据窗口中的内容已经得到了更新。9.4使用报表生成报表是用户肯定要提出的要求,利用数据窗口,我们可以制作出丰富的商业报表。下面我们通过一个例子说明如何设计和打印一张雇员名表。首先单击POWERBAR上面的数据窗口画板按钮。新建一个数据窗口,使之包括我们需要打印的数据内容。然后布置这个数据窗口的外观,使之更象一个报表。如图9-13。图9-13然后在数据窗口上面单击鼠标右键,弹出菜单,选择PROPERTIES命令,屏幕上弹出属性定义对话框。单击PRINTSPECIFICATION这一页,进行打印设置工作。敲入文挡的名字。这个组框是用来设定报表在上下左右方向空出的页边尺寸的。在PAPER这个组框当中可以设置打印纸的型号。我们全部接受缺省的设置。单击OK按钮。如图9-14。图9-14接下来,为程序中的打印按钮编写代码。输入这样一段代码:dw_1.Print(TRUE);表示按下这个按钮的时候打印这个数据窗口的内容。关闭所有打开的画板,运行这段程序。单击打印按钮,就可以打印出刚才设计的报表了。如图9-15。图9-159.5生成HTML文件在网络技术广泛应用的今天,INTERNET也被越来越广泛的应用起来。使用POWERBUILDER,我们可以把在数据操纵画板或者数据窗口画板当中检索出来数据以HTML文件的格式保存起来,这样网络浏览器就可以直接浏览数据的内容。非常的方便。下面我们通过一个例子来介绍如何生成一个HTML文件。首先打开一个数据库表,然后单击PAINTERBAR上面的DATAMANIPULATION数据操纵按钮,在这个画板出现的时候,选择FILE菜单的SAVEROWS
本文标题:PB教程第九章数据窗口与数据库
链接地址:https://www.777doc.com/doc-2885383 .html