数据库第15章 数据窗口对象.docx
- 文档编号:30716883
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:14
- 大小:231.91KB
数据库第15章 数据窗口对象.docx
《数据库第15章 数据窗口对象.docx》由会员分享,可在线阅读,更多相关《数据库第15章 数据窗口对象.docx(14页珍藏版)》请在冰豆网上搜索。
数据库第15章数据窗口对象
第15章数据窗口对象
数据窗口是PowerBuilder提供给开发人员快速建立应用程序的强有力的工具,也是PowerBuilder与其它面向对象的数据库应用前端开发工具的最主要区别。
它以自动化的用户/数据库接口为开发人员最大限度地节省了时间和精力,但这种自动化并不限制开发人员的主观能动性,开发者能够以独具特色的方式灵活运用数据窗口。
数据窗口包括两方面的内容:
数据窗口对象和数据窗口控件。
数据窗口对象主要用于展示数据并允许用户增删改数据,数据窗口控件则把数据窗口对象放置到窗口上并呈现在用户面前。
我们在本章学习数据窗口对象。
构造数据窗口对象时,首先要考虑两方面的内容:
数据源和显示风格。
数据窗口对象中的数据来源于数据源,数据源决定了数据窗口对象从什么地方得到数据。
显示风格决定了数据窗口以何种方式展示、表现数据。
PowerBuilder支持五种数据源:
快速选择、SQL选择、查询对象、外部数据源以及存储过程,每种数据源都有其独到之处,开发应用程序时往往会多种数据源并用。
PowerBuilder的数据窗口提供了十一种显示风格:
列表(Tabular)、表格(Grid)、自由格式(Freeform)、标签(Label)、分栏(N-Up)、分组(Group)、交叉列表(Crosstab)、统计图(Graph)、OLE2.0、超文本(RichText)、复合(Composite)风格。
上述风格只是定义了数据窗口的基本显示样式,通过设置数据窗口对象以及它所包含的其它对象的属性,我们就能够构造出变化万端的显示界面来。
另外,在数据窗口对象内部,我们还能够校验、过滤、排序其中的数据,并随时查看设计效果。
15.1创建数据窗口对象的步骤
PowerBuilder是个客户/服务器计算模式的客户端开发工具,访问与操纵数据库是PowerBuilder的特长。
除了嵌入式SQL语句能够操纵数据库外,本章讨论的数据窗口对象以及下章讲述的数据窗口控件能够以更方便、更直观、更简洁的方式操纵数据库,并将数据以多种方式展现在用户面前。
一、数据窗口对象概述
数据窗口对象是PowerBuilder中功能十分强大的一个对象,也是PowerBuilder有别于其它数据库应用系统开发工具的主要地方。
数据窗口对象的主要功能:
主要用于操作数据库中的数据:
数据窗口不仅能够图形化地增加、删除、修改、更新、查询数据库中的数据,而且还可以指定数据的输入格式、输出格式、以及数据的显示风格,同时,开发人员还可以在数据窗口对象中增加多种对象(包括按钮、静态文本框、图片等)。
没有的功能:
不能完成数据库中数据定义(包括定义表和视图、修改表与视图定义、删除表与视图)。
应用程序中使用的数据窗口通常由数据窗口对象和数据窗口控件两部分组成。
数据窗口对象一个独立的对象,它通过数据窗口画笔来创建,并保存到应用库中。
数据窗口控件是放在窗口上,与其他的窗口控件相同,用于显示与其相连的数据窗口对象中的内容。
通过数据窗口对象与数据窗口的配合使用,可以非常方便地完成数据的显示、增加、删除、修改等操作。
在以后的学习中,我们用数据窗口指代数据窗口控件或数据窗口对象。
使用数据窗口的一般方法为:
1.使用数据窗口画笔创建数据窗口对象,并把它保存到应用库中。
创建数据窗口对象时一般包括下述内容:
定义数据源、选择数据窗口的表现风格、设置数据窗口对象及其该对象内其它对象的属性等,例如显示格式、编辑风格、跳转次序、有效性规则、排序与检索条件等;
2、窗口上建立一个数据窗口控件;
3、过数据窗口控件的属性设置或编写代码将数据窗口控件与数据窗口对象联系起来,使其成为一个整体;
4、在窗口画笔或用户对象画笔中编写代码以操作数据窗口控件以及放置在该控件中的数据窗口对象,例如使用数据窗口控件的对象函数Retrieve()提取数据,使用Update()函数更新数据库中的数据等。
二、创建数据窗口对象的一般步骤
数据窗口对象的具体创建步骤与选择的数据源(即数据窗口得到数据的方式)密切相关,对不同的数据源,数据窗口对象的创建步骤也有所不同,但总的说来,都要完成以下步骤:
1.单击工具栏按钮new,弹出new对话框,选择datawindow选项;
2.datawindow选项页中列出了11种数据窗口的样式。
每一种样式代表一种独特的显示风格,单击OK弹出选择数据源窗口;
3.PB提供5种类型的数据源,选择quickselect,单击Next按钮,弹出quickselect数据源对话框;
4.在quickselect对话框中,选择表和表中的字段,单击”ok”按钮,弹出定义边框和颜色的对话框”selectcolorandbordersetting”;
5.在”selectcolorandbordersetting”对话框中,设置数据窗口的背景颜色、字段标签颜色等,单击“next“按钮,弹出”readytocreatefreeformdatawindow”;
6.在”readytocreatefreeformdatawindow”对话框中,显示了新建数据窗口的列表,设计者可以检查审定数据窗口,如不满意可以返回上一步操作重新选择和设定;如果满意,可以单击finish完成数据窗口的创建。
7.单击菜单“file”下的“save”选项,将数据窗口保存起来。
15.2数据源
数据源决定了数据窗口对象获取数据的方式。
PowerBuilder支持五种数据源:
快速选择(QuickSelect)能够创建简单的SQLSelect语句,主要用于从一个表或由外部键连接的多个表中选择数据列,但不能生成计算列;
SQL选择(SQLSelect)以可视化的方式建立SQLSelect语句,SQLSelect语句的所有细节均能通过该界面创建,主要用于从一个或多个表中建立复杂的SQLSelect语句,并且可以生成各种各样的计算列;
查询(Qurey)数据源将以前创建的Qurey对象作为数据窗口的数据来源;
外部(External)数据源用于让数据窗口访问数据库之外的数据,比如文本文件等;
存储过程(StoredProcedure)则直接利用保存在数据库中的存储过程作为数据源,这个数据源只有当当前连接的数据库支持存储过程时才有效,否则系统会自动隐藏该选项。
创建新数据窗口时,关闭了“NewDataWindow”对话框后,就要针对选择的数据源进行具体的定义,下面介绍各种数据源的定义方法。
一、QuickSelect数据源
QuickSelect是最简单的一种数据源,它允许开发人员从一个表或与该表有外部键关联的表中选择一个或多个列。
QuickSelect数据源定义出一条简单的Select语句,这条语句中可以指定选择的列、查询条件、以及排序方式,但不支持分组、计算列、提取参数等复杂的SQLSelect功能。
二、SQLSELECT数据源
SQLSelect数据源能够从多个表中选择列、指定查询条件、对数据排序、分组、增加计算列、定义提取参数等。
a)定义SQLSELECT数据源
b)定义SQLSELECT数据源的检索条件
只显示满足指定条件的数据。
c)定义检索参数
在定义检索条件时,如果条件中的值要在运行时才能确定,就需要使用检索参数。
定义了检索参数后,就可以使用检索参数构造“Value”列上的表达式了。
在表达式中使用检索参数时,需要在参数前放上个冒号(:
),例如写上:
ParaName,以告诉PowerBuilder这是个检索参数,而不是列名。
在条件中使用参数后,应用程序就能够根据运行情况动态地检索数据了。
d)指定排序方式
当希望检索出的数据按照某些列进行排列时,这时应该定义排序方式。
e)定义计算列
计算列不是数据库表中的原始列,而是通过表达式运算得到的列,例如,表A中由两个字符串型列aa、bb,则aa+bb形成的列就是个计算列。
f)定义分组
在SQLSelect数据源中,开发人员可根据应用程序的需要定义分组。
例如我们在显示一个学生的成绩时会希望按学生姓名分组显示。
g)定义having子句
三、Query数据源
Query数据源选取Query对象作为数据源,Query对象实际上就是条保存在应用库中的SELECT语句。
定义Query对象的目的是为了在多个数据窗口中重复使用相同的SELECT语句而避免反复定义。
与定义SQLSelect数据源相似,Query对象中可以定义检索参数、指定排序方式和分组方式、定义检索条件等。
1.创建query对象
在定义query数据源之前,需要使用query画板首先创建query对象,方法与定义SQLselect数据源相似。
2.定义query数据源
四、External数据源
External数据源从外部文件(比如文本文件)中提取数据,它是数据窗口唯一不需要连接数据库的数据源,其数据或由应用程序生成、或由用户输入。
定义外部数据源的数据窗口时,必须定义它的每一列及其数据类型。
五、StoredProcedure数据源
StoredProcedure数据源就是把存储过程作为数据源。
存储过程(StoredProcedure)是一组保存在数据库中的、经过预先编译和优化的、执行数据库操作的SQL语句。
与其它SQL语句相比,存储过程的执行效率更高(省掉了每次执行时的编译与优化时间)。
StoredProcedure数据源只在当前连接的数据库支持存储过程时才会出现在“NewDataWindow”对话框中。
15.3数据窗口的显示风格
数据窗口能够以多种多样的显示风格(Presentationstyle)展现数据、表现数据,过去需要大量编程才能完成的显示任务在数据窗口中只需要简单的选择。
PowerBuilder的数据窗口对象有十一种显示风格。
上述风格只是定义了数据窗口的基本显示样式,通过设置数据窗口对象以及它所包含的其它对象的属性,我们就能够构造出变化万端的显示界面,下面简单介绍这十一种风格的表现形式、作用及用途。
一、列表(Tabular)风格
在列表风格中,数据按列排列在数据窗口中,每列的上方都有一个标题,说明该列的数据。
每屏显示的数据行数取决于数据窗口的大小,而且支持运行时由用户调整各列位置。
另外,在每页中都可以显示页标题。
列表风格的数据窗口常用于数据输入,有时也用于生成报表。
二、表格风格
表格风格数据窗口中,数据的行与列之间通过网格线分隔,数据的每一项都位于其中一个网格中,运行时用户通过拖曳操作既能改变列的宽度,也能调整列的左右位置,但是,在设计数据窗口对象时我们不能移动列以及列标题的左右次序,这一点有别于列表风格和自由风格。
表格风格的数据窗口既可用于数据输入,又能作为报表输出。
二、自由格式(Freeform)
自由格式的显示样式十分灵活,所有字段前面都加有字段标题(称为标签),并且以垂直方式排列在数据窗口中。
在数据窗口画笔里,我们能够根据需要灵活地安排字段、标签、以及其它对象的位置。
一般情况下,自由格式的数据窗口一屏显示一条记录,常用于单记录输入。
三、标签(Label)风格
标签风格的数据窗口以标签形式显示每行数据,用它可以制作各种标签。
如果选择了标签风格,则在定义数据源后,还必须在“SpecifyLabelSpecifications”对话框中定义标签的各项参数。
在这个对话框中,系统列出了许多预定义的通用邮件标签,我们可以从中选择一个。
如果其中没有合适的格式,则完全能够进行手工调整,以满足特定的需求。
五、分栏(N-Up)风格
分栏风格能够在一行中显示多条记录。
如果选择了这种风格,在定义数据源之后,系统显示“SpecifyRowsinDetail”对话框,在这个对话框中指定一行显示几条记录(即分成几栏)。
六、分组(Group)风格
分组风格的数据窗口提供了一种对数据进行分组的简便途径,在这种风格下,数据被分成一个一个的组,组中可以带有统计数据。
实际上,我们可以把它看成是带有分组特性的列表风格。
当选择了此风格且定义了数据集后,系统将弹出“GroupReport”对话框,在这个对话框中指定按哪些列进行分组。
七、交叉列表(Crosstab)
风格交叉列表风格支持按行和/或按列分析数据,该风格的数据窗口对数据进行加工处理后以汇总形式展现出来。
当选择了此风格并定义了数据集后,系统将弹出“CrosstabDefinition”对话框,在这个对话框中分配交叉列表中的行、列及行列交叉点的数据值,通过双击分配后的行、列或值可以编辑相应的表达式。
八、统计图(Graph)风格
统计图风格的数据窗口以统计图的形式表现数据,在这里,数据不是通过行、列一个个孤立地显示出来,而是以图形的方式呈现在用户面前。
该风格的数据窗口提供了多种统计图,包括:
面积图(Area)、条形图(Bar)、列形图(Column)、线形图(Line)、饼图(Pie)、散点图(Scatter)、堆积图(Stacked)以及上述图形的三维形式。
freeform
九、OLE2.0风格
OLE2.0风格的数据窗口既能够显示非数据库数据(比如Word文档),也能够显示数据库中的BLOB(二进制大对象)列。
十、超文本(RichText)风格
超文本风格的数据窗口能够处理超文本数据,它可以利用Windows系统的字体、字型、颜色等属性以丰富多采的形式显示与编辑超文本,并且能够将数据库中的数据插入到超文本文档中。
十一、复合(Composite)风格
复合风格的数据窗口没有自己的数据源,它通过特殊方式将其它数据窗口对象组合起来,从而创建形式更复杂的数据窗口。
15.4字段的显示与编辑
数据窗口主要用于显示和输入数据,它提供的显示格式可以定义列的显示方式,编辑风格能够控制用户如何输入数据,有效性规则则判断输入数据的有效性,下面分别予以介绍。
一、字段数据的显示方式(fromat)
我们在做数据库应用系统开发时:
经常为了节约存储空间,以某种格式存储数据,而在显示数据时又以用户熟悉的方式出现,例如,以日期类型保存日期数据,以用户熟悉的年/月/日形式表现数据;以数值类型保存货币金额,显示时在金额前放上货币符号¥;在数据窗口中都能通过列的显示格式来定义。
PowerBuilder在系统中预先建立了一些常用的显示格式,例如,标准货币格式,它会插入美元符号和逗号,并把负值变成红色。
开发人员当然可以根据需要定义自己的显示风格。
显示格式(DisplayFormat)决定数据以何种方式呈现在用户面前。
当用户单击带有显示格式的列时(即将输入焦点移动到该列),显示格式消失,代之以编辑风格。
显示格式常用于不允许用户修改的列上。
二、编辑风格(editstyle)
与显示格式相似,编辑风格(EditStyle)改变了数据的显示方式。
与显示格式不同的是,当定义了编辑风格的列得到输入焦点时,编辑风格并不消失。
编辑风格影响用户输入和修改数据的方法。
编辑风格有六种不同的类型:
1.编辑框(缺省风格)(EditBox)
2.编辑掩码(EditMask):
用于以一定的格式,强制显示数据和输入数据,如电话号码、日期等。
3.复选框(CheckBox)适合简单的两值选择数据,如“婚否”。
学科表里的“重点学科”。
4.单选钮(RadioButton)用于选项不多且固定的字段,达到既直观,又减轻用户的数据录入负担的效果。
例如性别、学历等。
5.下拉列表框(DropDownListBox)适用于数据量不大且又固定的场合,选项是在创建数据窗口时定义的。
6.下拉数据窗口(DropDownDataWindow):
也是使用下拉列表框选取数据,但下拉列表框中的数据是由数据库中读出的。
例如,学生成绩表中的课程字段的取值,就应该是subject表中课程的取值。
三、有效性规则
尽早发现录入数据的错误是应用程序的基本功能之一,虽然大多数数据库都支持有效性规则,但它只能在程序向数据库提交数据时才能发现数据存在的问题。
与显示格式和编辑风格相似,用数据库画笔定义列的扩展属性时可以定义列的有效性规则,并且该规则缺省地应用到数据窗口的相应列上。
然而有时候我们需要针对具体的数据窗口定义相应的有效性规则。
定义了有效性规则后能够在用户移动输入焦点时就发现输入的数据是否有效。
有效性规则实际上就是个判别值为真或假的逻辑表达式,为真(TRUE)时数据窗口接受用户输入,为假(FALSE)时显示出错信息,让用户重新输入数据。
缺省情况下PowerBuilder用消息框(MessageBox()函数)显示出错信息,当然我们也能够在数据窗口控件的ItemError事件中编写程序,针对不同错误做出不同的处理。
例如在student表中,要求在输入数据时学号大于99000可以在有效性检验表达式中表示:
步骤:
选择View|columnspecification,出现“columnspecification”子窗口,单击鼠标右键弹出菜单,选择“expression”,设置有效性检验规则。
Stud_id>99000
15.5制数据行
在定义数据源时,我们可以指定检索条件、排序方式、以及数据如何分组,系统根据定义生成相应的SQLSELECT语句,程序运行时由服务器完成检索、排序、以及分组工作。
但有时候应用程序需要在应用程序完成上述任务,比如按数据库管理系统不支持的方式排序数据等。
此时,我们就可以使用数据窗口的记录过滤、排序、分组功能。
过滤条件既可以在设计数据窗口时设计,也可以运行时让用户根据需要输入。
一、过滤数据
在定义数据窗口的数据源时,通过WHERE、HAVING子句以及检索参数已经限定了从数据库中提取的数据,但有时候我们需要对得到的数据再做进一步的约束,比如暂时显示其中的一部分数据,需要时再显示满足其它条件的数据等。
另外,有时候我们选择数据的条件中需要使用PowerScript函数,而DBMS并无相应函数支持。
在上述情况下,就需要使用过滤条件。
过滤针对存放在数据窗口缓冲区中的数据进行,不生成新的SQL语句,也不访问数据库。
过滤条件是个逻辑表达式,条件为真(TRUE)的数据被显示,为假(FALSE)的数据被隐藏。
实现方法:
选择“rows|filter…”选项,弹出“specifyfilter”对话框,在编辑框中设置过滤条件表达式。
我们也可以在程序中动态地设置过滤条件。
二、排序
定义数据源时,通过ORDERBY子句可以对检索到的数据排序,这种方式下排序工作由DBMS完成。
但有时我们希望数据检索出来后按不同顺序查看数据,指定数据窗口的排序方式可以完成这种任务。
选择“rows|sort…”选项,弹出“specifysortcolumn”对话框,选择排序的列。
我们也可以在程序中动态地设置排序表达式。
三、压缩重复值
数据窗口缺省时显示所有满足条件的值,特别在排了序的情况下,我们往往希望排序列的重复数据只在该数据的第一次出现时显示,随后的重复数据被隐藏。
例如在学生成绩表(grade)中,我们按学号、课程排序,希望学生的序号只出现一次。
就可以将选中stud_id列压缩数据的重复值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库第15章 数据窗口对象 数据库 15 数据 窗口 对象