290 likes | 484 Views
第 六讲 数据窗口对象的应用. 一、 数据窗口控件的使用 数据窗口控件是窗口中一个标准的 PowerBuilder 控件,它放在窗口中,是窗口的一部分,不能独立存在。数据库中的数据要在数据窗口对象中显示和修改,必须依靠数据窗口控件。 把数据窗口控件放在窗口中,使这个数据窗口控件和相应的数据窗口对象关联,通过这个数据窗口控件完成数据窗口对象和数据库的连接。. 添加数据窗口控件
E N D
第六讲 数据窗口对象的应用 一、 数据窗口控件的使用 数据窗口控件是窗口中一个标准的PowerBuilder控件,它放在窗口中,是窗口的一部分,不能独立存在。数据库中的数据要在数据窗口对象中显示和修改,必须依靠数据窗口控件。 把数据窗口控件放在窗口中,使这个数据窗口控件和相应的数据窗口对象关联,通过这个数据窗口控件完成数据窗口对象和数据库的连接。
添加数据窗口控件 • 打开要添加数据窗口控件的窗口,选择菜单【Insert|Control|DataWindow】,在窗口的适当位置点击鼠标左键,这时出现一个空白框,这个空白框就是数据窗口控件。
更改数据窗口控件属性 常用的属性有: (1)DataObject:设置与数据窗口控件关联的数据窗口对象名称。 (2)TitleBar复选框:选中表示数据窗口控件显示标题栏,否则不显示 (3)Title文本框:定义标题栏中标题内容。 (4)ControlMenu复选框:选中表示在标题栏上显示控制按钮,否则不显示。 (5)MaxBox、MinBox:选中这两个复选框分别表示给标题栏添加最大化按钮和最小化按钮。 (6)HScrollBar VscrollBar:选择这两个复选框分别表示给数据窗口控件添加水平和垂直滚动条。 (7)Border复选框和Border Style下拉列表框:用来设置控件的边界形状。 (8)Name:编辑框中的内容表示数据窗口控件名称,编写脚本时使用该名称。 (9)Other标签页:设置控件的位置、大小及鼠标在控件中的形状。
设置数据窗口控件中关联的数据窗口对象 (1)静态关联 选择数据窗口控件,点击右键,选择Properties进入数据窗口控件的属性视窗,在DataObject框中输入要关联的数据窗口对象。 (2)动态关联 程序运行过程中,若一个数据窗口控件在不同情况下要关联不同的数据窗口对象,这时就要用脚本控制,实现动态关联。 脚本控制语句如下: dw_controlname.dataobject=“d_objectname”
二、 操作数据窗口对象中数据的前提 • 程序运行时,要操纵数据窗口对象中的数据,就要在程序中连接数据库,让数据窗口对象与数据库之间建立连接。必须首先创建应用程序与数据库之间的连接,应用程序与数据库之间的连接是通过事务对象完成的。 • 什么是事务对象 • 事务对象是一个传递应用程序与数据库之间信息的一个变量,它驻留在内存中,存储着用于连接数据库及从数据库得到反馈的所有信息,它定义了数据库与应用程序连接的参数。一个应用程序开始创建时,系统就自动定义一个名为SQLCA的默认全局变量。
事务对象的属性 事务对象共有15个属性,可以分为两类,一类有10个,用来描述连接数据库的信息,如所连接的数据库的名称;另一类有5个,用来接受有关数据库或最近执行SQL语句的情况或状态,如数据库操作是否成功。 AutoCommit:这是一个布尔型属性。它指定是否将数据库设置成自动提交所有事物。当它为TRUE时,由系统自动提交所有事务,当为FALSE时,用户必须自己在程序中设置事务管理,并在需要的时候对数据库进行提交事务。它的默认值是FALSE。 DataBase:这是一个字符串类型的属性。它指定要连接的数据库名称。 DBMS:这是一个字符串类型的属性。它指定应用程序所使用的数据库管理系统的名称,如ODBC。
DBPass:这是一个字符串类型的属性。它描述的是用户连接数据库的密码。DBPass:这是一个字符串类型的属性。它描述的是用户连接数据库的密码。 Lock:这是一个字符串类型的属性。它是数据库的保护级别,一般不必给出。 LogID:这是一个字符串类型的属性。它用于指定登录数据库服务器所需的用户名或用户的ID。 UserID:这是一个字符串类型的属性。它指定了连接数据库的用户名或用户的ID。
使用系统默认的事务对象SQLCA 系统提供了一个默认的全局事务对象SQLCA,可以在程序的任何地方使用这个事物对象。下面是一个连接ODBC数据库所用的代码:// Profile ExerciseSQLCA.DBMS = “ODBC”SQLCA.AutoCommit = FalseSQLCA.DBParm = “Connectstring=‘DSN=exercise’”这段脚本用来设置事务对象的属性,一般把它写在应用程序的Open事件中。
连接数据库 定义了事务对象之后,要在数据窗口对象中处理数据库中数据,还必须配合其它语句一起使用。 1)connect:数据库连接 该语句表示与数据库连接。它的语句结构是: connect [using 事务对象名]; 若是使用sqlca,可以使用两种格式: connect; connect using sqlca; 上面两条语句作用一样,也就是说使用系统默认的sqlca,语句中可以指明,也可以不指明,默认指sqlca。
2)disconnet:断开与数据库的连接 该语句表示断开与数据库的连接,它的语法结构是: disconnect [using 事务对象名]; 使用方法同connect
3)commit:提交事务 用来提交当前所做的一切事务,实际上是向数据库提交所有数据修改工作。它的语句结构及使用方法同connect。 4)rollback:取消事务 它用来回滚当前的所有事务,实际上是取消自上次提交事务以来的这一段时间内所有数据修改工作。 它的语句结构及使用方法同前面connect
三、操作数据窗口中的数据 • 检索数据函数(retrieve) 1)函数不带参数 格式:dwcontrolname.retrieve() 如数据窗口控件dw_1检索数据,可用dw_1.retrieve()语句。 这种情况的使用简单,用于没有设定任何参数的数据窗口对象。 2)函数的返回值 函数返回一个整型值,表示从数据库中检索到的行数;若没有匹配的结果,则返回值是0;若检索中出现了错误,返回值是-1。
对数据窗口控件中的数据进行过滤(setfilter) 对数据窗口中的数据进行过滤,但又不想重新从数据库中检索数据,这时就要用到setfilter()函数。 1)语法形式: dwcontolname.setfilter(filterexpression) filterexpression是一个字符串,表示过滤条件表达式,它是一个逻辑表达式,其中各关系表达式之间用逻辑运算符and、or、not连接。 2)函数的返回值 1表示成功,-1表示失败。 3)典型应用 dw_1.setfilter(“math_score>=70 and math_score<90”) 数据窗口控件dw_1的过滤结果:显示“math_score”字段的值介于70和90之间的记录(包含70,不包含90)。
应用举例 实例1 实验1
更新数据(update) Update函数用于把当前数据窗口中从上次执行update或retrieve函数以来进行的所有修改保存到数据库中。 1)常用语法形式如下: DWcontrolname.Update() 如更新数据窗口控件dw_1,脚本写为: dw_1.update()
2)函数返回值 若返回值是1表示成功,返回值是-1表示失败。 3)典型应用 if dw_1.update()=1 then commit; else rollback; end if 数据窗口中数据更新正确则提交事务(保存数据),否则取消事务(不保存数据)。
插入记录(insertrow) 录入数据,添加新记录,就要用到insertrow函数。要想将插入的记录保存到数据库中,还应执行更新命令。 1)语法形式: DWcontrolname.insertrow(rownumber) 其中rownumber表示插入行的行号,它是一个long型变量。若它的值是0,表示在数据窗口的最后插入一条记录。 2)函数的返回值 函数的返回值是long型,表示插入行的行号;插入失败返回值是-1。 该函数只能插入一条记录,但不能自动滚动到插入行,也不能自动把插入行设置为当前行。
3)典型应用 long nn nn=dw_1.insertrow(0) dw_1.scrolltorow(nn) 在数据窗口控件dw_1的最后插入一条空白记录,并使屏幕滚动,使刚插入的记录显示在屏幕范围内。
删除记录(deleterow) 处理数据时,删除多余的记录,就要用到deleterow函数。要将删除记录的结果保存到数据库,还应使用更新命令。 1)语法形式: DWcontrolname.deleterow(rownumber) 其中rownumber表示要删除的行号,它是一个long型变量。若它的值是0,表示删除当前行。 2)函数的返回值 1表示删除成功,-1表示删除失败。 3)典型应用 long nn,row1 nn=dw_1.rowcount() for row1=1 to nn dw_1.deletrow(1) next 删除数据窗口控件dw_1中现有的所有记录,记录虽然删除,但数据库中数据并没改变,我们改变的只是缓冲区中的内容,要将删除结果保存,需要编写更新脚本。
应用举例 示例2 示例3
一个实例的开发过程详解 以创建一个图书管理系统为例 7.1 创建新目录 在创建应用程序之前,首先在D盘上创建一个名为Study的目录,该目录用来保存数据库文件、工作空间、PBL库文件和PBT目标文件。把应用程序涉及到的所有文件放入一个新建的目录中是个好习惯。 7.2 创建数据库 数据库用于保存图书的数据。我们使用PowerBuilder9.0自带的ASA8.0数据库管理系统创建事例所需要的数据库bookdatabase。 1. 单击PowerBar工具栏中的【New】图标,弹出New对话框。 2. 选择【Database】标签页中的【Database Painter】画板图标,单击【Ok】按钮。 3. 双击【ODB ODBC|Utilities|Create ASA Database】图标,弹出Create Adaptive Server Anywhere Database对话框。
7.3 创建数据表 创建数据表用于保存图书的各种信息 如:操作员表 会员表 图书表 借书还书表
7.4 创建新工作空间 1. 单击PowerBar工具栏中的【New】图标,弹出New对话框。 2.选择【WorkSpace】标签页中的【WorkSpace】图标,单击【Ok】按钮,弹出New WorkSpace对话框。 3. 在文件名文本框中输入工作空间的名称Study,保存在新建目录D:\Study中,单击【保存】按钮即可。
7.5 创建新应用程序 应用程序也称应用,一个应用可以完成一组相关的功能,应用由一系列的PowerBuilder对象组成,应用库是存储PowerBuilder应用的文件,应用对象是用来标识应用、进入应用的入口点。 1. 单击PowerBar工具栏中的【New】图标,弹出New对话框。 2. 选择【Target】标签页中的【Application】图标,单击【Ok】按钮,弹出Specify New Application and Library对话框。 3.在Application Name文本框中输入应用的名称Study,单击Library文本框,系统将自动设置与应用同名的库文件名和目标文件名,单击【Finish】按钮,即完成应用程序的创建。
7.6 创建数据窗口对象 数据窗口对象是PowerBuilder中的对象,通过它不但可以对数据库中的表进行检索、查询、插入、删除和更新,而且还可以对数据指定显示格式、编辑风格和有效性验证。
7.6 创建数据窗口对象 1.单击PowerBar工具栏中的【New】图标,弹出New对话框。 2.选择【DataWindow】标签页,弹出包含11种数据显示风格的对话框。 3.选择Freeform图标,单击【Ok】按钮,弹出Choose Data Source for Freeform DataWindow对话框。 4.选择Quick Select数据源,单击【Next】按钮,弹出Quick Select对话框。 5.选择Tables列表框中的Address表,在Columns列表框中显示出Address表的所有字段,单击【Add All】按钮,就会选中所有字段。 6.单击【Ok】按钮,弹出Select Color and Border Settings对话框,在Background Color下拉列表框中选择Button Face,在Columns分组框的Border下拉列表框中选择Lowered。 7.单击【Next】按钮,弹出Ready to Create Freeform DataWindow对话框,列出了所创建的数据窗口的全部设置特性。 8. 单击【Finish】按钮,弹出Datawindow的Design窗口。
7.7 创建窗口对象 窗口是用户和PowerBuilder应用程序之间主要的交互界面。窗口可用来显示信息、请求用户输入以及响应鼠标或键盘操作 1. 单击PowerBar工具栏上的【New】图标,弹出New对话框。 2. 选择PB Object标签页中的Window对象图标,单击【Ok】按钮,进入窗口画板。画板工作区中的矩形代表要创建的窗口,将窗口矩形用鼠标拖拉到适当大小。 3. 在窗口中添加数据窗口控件和按钮。首先单击窗口画板工具栏上的下拉式命令按钮,弹出工具栏,选择需要的控件图标,然后单击窗口里想放置控件的地方,适当调整控件的大小和位置。窗口最后调整成为如下页图样子。
7.8 编写脚本 1. 为应用对象的Open事件编写脚本。单击【Window|System Tree】菜单项,弹出系统树窗口。双击应用对象图标弹出脚本编辑窗口。在脚本编辑窗口中有两个下拉列表框,左边的是对象下拉列表框,右边的是事件下拉列表框,分别选择Study应用对象和Open事件,在脚本编辑区书写如下代码: SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "Connectstring=’DSN=bookdatabase'" connect; open(w_main) 2. 为窗口对象的Open事件编写脚本。用鼠标右击窗口弹出一个菜单,选择Script菜单项,弹出脚本编辑窗口,在对象下拉列表框中选择窗口对象W_study,在事件下拉列表框中选择Open事件,在脚本编辑区书写如下脚本: dw_1.settransobject(sqlca) 3. 为检索按钮Cb_1的clicked事件编写脚本。在步骤2弹出的脚本编辑窗口中选择对象Cb_1和事件clicked,在脚本编辑区书写如下脚本: dw_1.retrieve()
7.9 创建可执行的(exe)文件 1. 单击PowerBar工具栏上的【New】图标,弹出New对话框 2.选择Project标签页中的Application选项,单击【Ok】按钮 3.在Executable File Name文本框中输入生成可执行文件的名称和路径,这里输入D:\Study\Study.exe;在Project Build Options的Rebuild下拉列表框中选择Incremental;在Code generation Options选中Machine Code复选框;在最后一行选中Dll复选框,如下图所示。 4. 单击Project画板上的Save按钮,在Projects文本框中输入工程文件的名称p_study_exe,单击【Ok】按钮。 5. 单击Project画板上的【Deploy】按钮即在D:\Study目录中生成在操作系统下可执行的exe文件,生成过程中会弹出Build Library对话框,如果要中途退出,可以单击【Stop】按钮。