数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 1
第 12章 数据窗口
本章重点内容
根据需要设计数据窗口对象
熟悉数据窗口画板及其基本操作
理解不同的数据源和显示风格
设置数据窗口的各种对象和属性
数据窗口的打印设置
统计图表的使用
数据库开发常用功能的实现方法数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 2
12.1 数据窗口
12.1.1 数据窗口的设计思想
– 一个数据窗口通常由 数据窗口控件 和 数据窗口对象两部分组成。
– 数据窗口控件 是被粘贴到窗口上的窗口级对象,提供了一个展示数据窗口对象的窗户,它可以在窗口中通过画板工具栏创建。
– 数据窗口对象 直接关联数据表,主要用于显示数据并允许用户增删改数据。通过在数据窗口中控件的
Data Object属性中设置有关的数据窗口对象的名字,
将数据窗口对象和窗口联系在一起,并把数据对象显示给用户。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 3
12.1 数据窗口
数据窗口有两个重要特性:数据源和数据显示风格。
– 数据源 指如何获取数据,即数据的来源。
– 显示风格 指数据窗口对象以何种格式显示给用户,
即用户如何和数据窗口交互。
– 为了有效的实现和用户的数据交互,可以在窗口或用户对象中放置一个 数据窗口控件,并将这个控件同创建的 数据窗口对象 关联起来,在应用程序中就可以通过这个数据窗口控件同数据源交换信息,最后还可以在窗口画板和用户对象画板中书写脚本,
动态地控制数据窗口控件及显示内容。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 4
12.1 数据窗口
12.1.2 数据窗口的创建
– ( 1) 单击工具条上的,新建,按钮,在 New对话框中选择 DataWindow标签。
– ( 2) 选择显示风格:在 DataWindow标签中可以看到有 11种显示风格,表示 11种不同的显示格式,可根据需要选择。
– ( 3) 选择数据源:有 5种可被选择的数据源:
Quick Select,SQL Select,Query,External和
Stored Procedure。
– 设置数据表及数据列
– 保存
数据窗口创建实例演示数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 5
12.2 典型数据窗口设计
数据窗口的显示风格是指数据在数据窗口中的显示格式。
11种显示风格
– 1,Composite( 复合风格)
– Composite( 复合风格)的特点是可将已存在的多个不同风格的数据窗口对象放在一个数据窗口中显示,
– 这种数据窗口本身没有数据源。
12.2.1 显示风格数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 6
12.2.1 数据窗口 —显 示风格
2,Crosstab ( 交叉表)
Crosstab ( 交叉表)风格是模拟电子表格的数据窗口表现风格。其特点是横向和纵向都有标题,可以对行和列的数据进行统计。 Crosstab主要用于分析和统计数据,可自动将检索到的数据分类或分组,
进行累计求和和求平均值等运算。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 7
CrossTab风格数据窗口示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 8
12.2.1数据窗口 —显 示风格
3,Freeform( 自由格式 )
Freeform是一种很常用的数据窗口显示风格,允许用户随意拖动列和列标签,使用非常灵活自由,因而得名 。 这种风格通常用于数据录入,更新删除 。 在显示时,通常是一条记录占据数据窗口一屏 。
默认时,Freeform风格的所有列显示标签都显示在字段的左边 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 9
Freeform风格示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 10
12.2.1 数据窗口 —显 示风格
4,Graph( 统计图风格 )
Graph( 统计图风格)是基于图形、图像的数据窗口显示风格,可以使用户直观的操作数据,
尤其适用于数据统计。在创建 Graph风格的数据窗口对象过程中会弹出 12-14所示的,Define
Graph Data‖对话框。在 Category下拉列表框中选择作为横轴的字段,在 Values下拉列表框中选择作为纵轴的字段。在 Series下拉列表框中选择分类统计的依据。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 11
设定横轴列设定纵轴列设定分类轴
Graph风格数据窗口的创建数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 12
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 13
预览窗口数据窗口设计结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 14
12.2.1 数据窗口 —显 示风格
5,Grid( 网格风格 )
Grid( 网格)风格的数据窗口的主要特点是:
以带线的电子表格的形式显示数据,有多列、
多行,数据的与列之间用线隔开。数据的每一项都放在网格之中。在设计数据窗口对象时不能移动列和列标题,也不能添加列和列标题。
但在程序执行时却可以移动每一列,以改变各列的宽度和列的排列顺序。由于它以整齐的方式显示数据,因此它常常用于查询数据量较大的数据窗口或打印报表。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 15
Grid风格数据窗口示例数据窗口工作区数据窗口预览工作区数据窗口列工作区对象属性对话框数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 16
12.2.1 数据窗口 —显 示风格
6,Group( 分组风格 )
Group风格为数据窗口提供了一种对数据窗口分组显示的简便方法 。 所谓分组指将数据按某一数据项值的不同分开显示 。
在这种风格下,每一组都带有统计数据,
适合于显示有组关系的数据 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 17
Group分组风格数据窗口示例
设置用于分组的列分组依据数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 18
单击 Next按钮,进入 Set Group Page Data对话框,用户可以根据需要进行相应的设置标题每组从新的一页开始显示每组结束后重置页号( 1)
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 19
结果数据窗口预览结果设计结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 20
12.2.1 数据窗口 —显 示风格
7,Label( 标签风格 )
Label风格的数据窗口对象是由多个标签组成的。它主要用在某些特定的场合,
如图书馆中的图书标签、贴在信封上的邮寄标签等。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 21
设置标签属性标签高度标签宽度每行显示标签个数每页每列显示标签个数标签的列间距标签的行间距定义数据在标签中的显示顺序按行优先顺序按列优先顺序标签宽度数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 22
页面设置设置页边距设置进纸方式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 23
Label风格设计结果设计结果预览结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 24
数据窗口 —显 示风格
8,N-UP( 分栏风格 )
N-UP风格所显示的数据窗口和 Word文字排版中的分栏处理类似 。 它能一行显示多条记录,从而一屏可以显示更多的记录,
尽量减少滚动浏览的次数 。 另外用它来显示一些定期产生的数据也是非常方便的,这样,可以把不同时期产生的数据在同一行显示,以便进行对比 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 25
N-UP风格示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 26
9,Tabular( 表格风格 )
Tabular风格类似于显示一列的 N-UP风格,
数据按列排列在数据窗口中,每一列数据都有相应的标题,用户可以任意调整字段标题和字段的位置,各列的位置可以交换,数据可以分组显示。 Tabular风格数据窗口常用于数据输入和报表中。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 27
Tabular( 表格风格)示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 28
数据窗口 —数 据源
12.2.2 数据源的定义
数据源即数据的来源,指数据窗口对象获取数据的方式。 PowerBuilder有 5种数据源,Quick Select,SQL Select,Query、
External和 Stored Procedure 。 其中只有使用的 DBMS支持存储过程并可以返回结果集时,PowerBuilder才显示 Stored
Procedure数据源图标。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 29
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 30
12.2.2 数据源的定义
1,Quick Select数据源
– Quick Select数据源,顾名思义,是快速选择数据源,
它是定义数据源的最为简便、快捷的方法。
– Quick Select主要用于从一个表或多个通过外部键连接的表中选择某些数据列,而且这些数据列都是非计算列(即不是通过计算得到的列)。可以为 Quick
Select数据源的数据定义排序和检索条件,但不能进行数据分组,不能定义计算列和使用检索参数。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 31
12.2.2 数据源的定义
2,SQL Select数据源
– SQL Select数据源主要用于在一个或多个表中通过 SQL语句来选择数据(表之间不一定要有外部键关联)。这种数据源对 SELECT
语句具有更强的控制能力。使用 SQL Select
数据源可以对数据进行分组、添加计算列、
定义筛选条件和进行分组统计等操作,可以定义和使用检索条件,可以把系统生成的
SQL语句作为查询存储起来,并可以把它作为 Query数据源使用。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 32
12.2.2 数据源的定义
3,Query数据源
– Query数据源是一组可以重复使用并存储在文件中的一组 SQL语句。 Query数据源可以是 SQL Select数据源个选项定义的结果所创建的一个查询,也可以是数据库画板中所包含的 Query画板。
4,External数据源
– External数据源,即外部数据源,该数据源数据不是来自于数据库,而是来自于其它文件或由应用程序生成数据。由于 External数据源数据不是来自于数据库,所以应该为该类数据窗口定义列及其数据类型。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 33
12.2.2 数据源的定义
5,Stored Procedure数据源
– Stored Procedure数据源是利用数据库中定义的存储过程定义数据源,所谓存储过程是指事先编译好并存储在数据库中的 SQL语句。
用户可以调用存储过程完成查询。
– 如果要使用存储过程数据源,则首先要求所使用的数据库平台要支持存储过程,另外要在数据库中已经建立了相应的存储过程。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 34
12.2.3 数据窗口对象的属性
1.数据窗口对象总体属性
鼠标单击数据窗口画板的工作区内任何空白区域,在 Properties属性工作区设置。
Gr i d 风格特有属性数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 35
指定打印文档名,打印队列中标识该报表指定打印机指定页边距指定打印方向指定纸张大小指定纸张来源,自动或手工送纸可以使用默认打印机打印或预览时是否显示数据窗口对象上的按钮覆盖重名的打印作业设定分栏数目指定栏宽数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 36
2.数据窗口中对象的基本属性
数据窗口中的对象指文本 ( 标题,标签等 ),和数据对象 ( 包括列,计算域,汇总信息等 ) 等的属性 。
文本框的属性边框对齐方式文本数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 37
2.数据窗口中对象的基本属性
数据对象的属性
Format显示风格数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 38
Edit编辑风格下拉数据窗口数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 39
CheckBox样式 C h e c k B o x 风格设置结果如下,
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 40
DropDownDW样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 41
DropDownListBox样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 42
Edit Mask样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 43
RadioButtons样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 44
3.数据窗口的工作带汇总带细目带带标题带脚注带标题标识带细目标识带汇总标识带脚注标识带数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 45
表 12-1 数据窗口中各工作带的作用工作带名 作 用标题带
( Header)
用来显示位于屏幕或页面顶端的信息,如列标题
、报表标题及其它页眉信息(如日期等)
细目带
( Detail)
用来显示和操作来自数据源的数据,是数据窗口的主体汇总带
( Summary)
用来显示所有数据的汇总信息,如求总和、平均值等脚注带
( Footer)
显示位于屏幕或页面底端的信息,如页数、页号
、报表注释信息等数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 46
4,设置 Tab键次序
– 选择按钮,或选择菜单 【 Format】 | 【 Tab
Order】,会发现各列的上面均出现了红色的数字显示 。 用鼠标选中即可修改 Tab键值
( 以 10为单位,Tab键按数值递增的顺序跳转,0表示不能获得焦点 ),可以修改 。 修改完成后,用同样的方法返回 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 47
– 注释:为数据窗口对象新增的字段,或由多个数据表生成的数据窗口对象中的字段的
Tab值均为 0,即默认这些字段是不允许修改的,Tab键也不会跳到这些字段。如果需要,可以修改这些字段的 Tab值为一合适的非 0值(但不同列的 Tab值不能重复)。恰恰是利用 Tab值为 0这一特性,可以控制某些字段不能被修改。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 48
12.2.4 数据窗口对象上的控件选择一个对象创建一条直线添加一个计算域为选定的列添加平均值域添加按钮对象添加文本对象添加图片对象添加组框对象添加列添加统计图为选定的列添加计数域添加页号为选定的列添加求和域添加日期域添加 O L E 对象添加数据库 O L E 对象添加报表对象数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 49
1,添加按钮
方法同窗口控件
– 属性对话框的 General标签页中的 Action下拉列表框指定按钮的功能 。 具体如下:
Append Row,追加行;
Cancel,撤消 Retrieve( Yield) 操作;
Delete Row,删除行;
Filter,过滤;
Insert Row,插入空白行;
Page First,第一页;
Page Last,最后一页;
Page Next,后一页;
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 50
1.添加按钮
Page Prior,前一页;
Preview,打印预览;
Preview with Rules,显示打印预览标尺;
Print,打印;
Query Clear,在查询模式中去掉 WHERE子句;
Query Mode,切换查询模式的打开与关闭;
Query Sort,允许用户定义排序条件;
Retrieve,检索;
Retrieve( Yield),用于大量数据的检索,检索过程中,可用 Cancel终止当前检索;
Save Row as,将数据窗口中的数据另存为其它格式文件;
Sort,排序;
Update,提交;
User Defined,用户自定义 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 51
2.添加平均值、计数域、求和域
平均值,计数,求和图标主要用于在数据窗口对象的 Summary工作带添加汇总信息 。 添加汇总信息的方法是:
在数据窗口对象的 Detail工作带选择要进行汇总计算的列 ( 可以是计算列或计算域 ) 。 然后选 择 相 应 的 按 钮 或 选 择 菜 单
Insert→ Control→ Average,Sum或 Count,相应的计算表达式会自动添加到 Summary工作带 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 52
3.添加计算域或计算列
计算域和计算列主要用于添加基于列的数据计算(如学生总成绩)、或用于连接数据列等信息。
计算域和计算列含义不同,
– 计算列是指在 Select画板里直接为 SELECT语句定义的计算列,这些语句用于将数据检索到数据窗口对象。
– 计算域是指在数据窗口画板中通过图标添加的
Computed Field,可以在确定了 SELECT语句后定义计算域。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 53
3.添加计算域或计算列
计算列和计算域的区别:
– 计算列直接定义在数据源的 SQL SELECT语句上,
将计算结果带到数据窗口上,由于只有在数据窗口执行检索命令时,才执行相应的 SQL语句,所以数据窗口上的操作(不重新检索数据库时)不会引起计算列的变化,只有重新检索数据库时,计算列的内容才会发生变化。
– 计算域是定义在数据窗口对象之上,它是根据数据窗口的数据进行计算,因而数据能够动态变化。
使用计算域的方法
– 选择图标或选择菜单【 Insert】|【 Control】|
【 Computed Field】,然后在要放置计算域的位置单击鼠标,
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 54
4.添加新列
选择图标或选择菜单 【 Insert】 ∣ 【 Control】 ∣
【 Column】,在数据窗口对象上单击要放置该列的位置,弹出 Select Column对话框显示出数据窗口数据源的所有列,选择需要的列,然后单击 【 OK】 按钮即可 。
注释:数据窗口对象的列也可单击工具栏上的图标重新回到数据源对话框对数据列进行选择 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 55
12.3 数据窗口中数据处理
12.3.1 数据正确性检查
在数据窗口画板中设置校验规则的步骤如下:
1.打开要设置校验规则的数据列的属性对话框,单击属性对话框中某些属性旁边的图标,即可弹出校验规则对话框,
如图 12-49所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 56
12.3.1 数据正确性检查数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 57
12.3.1 数据正确性检查
2.在 Expression编辑框中输入校验表达式,可以使用 Functions和 columns提供的函数和列,然后单击 【 Verify】 按钮进行验证。如果表达式正确,出现,Expression is OK‖提示框。此时单击 【 OK】 按钮返回,此时会发现原来的红色按钮变成了绿色按钮。
注释:校验表达式可以是关系表达式或逻辑表达式,同时还可以是如下格式的 IF语句格式:
IF(关系表达式或逻辑表达式,数据正确时的提示信息,数据错误时的提示信息),
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 58
12.3 数据窗口中数据处理
12.3.2 数据排序、过滤、分组及去掉重复值
1.分组显示
分组显示是把数据窗口检索出的数据按一定条件分组,将具有相同特征的数据放在一起显示。对于要分组的数据,一般应先定义排序。分组显示的定义方法如下:
在数据窗口画板中,选择菜单 【 Rows】︱【 Create
Group】,弹出,Specify Group Columns‖对话框,
如图 12-50所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 59
12.3.2 数据排序、过滤、分组及去掉重复值图 12-50 ―Specify Group Columns‖对话框数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 60
12.3.2 数据排序、过滤、分组及去掉重复值
用鼠标把分组依据的列名拖动到右边的列表框中,单击 【 OK按钮 】 。在上图中
fpno列为发票号,分组完成后,数据窗口的预览结果如图 12-51所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 61
12.3.2 数据排序、过滤、分组及去掉重复值
2.去掉重复值
当数据窗口某个(些)列的数据具有重复值时,为了显示上的直观,可以使用去掉重复值的方法使其只显示一个。例如,将图 12-51的所属单位列去掉重复值后的结果如图 12-52所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 62
12.3.2 数据排序、过滤、分组及去掉重复值
图 12-52 按所属单位字段去掉重复值后的预览结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 63
12.3.2 数据排序、过滤、分组及去掉重复值
去掉重复值的方法是选择菜单
【 Rows】 | 【 Suppress Repeating
Values】,弹出,Specify Repeating Value
Suppression List‖对话框,如图 12-53所示。
用鼠标将要去掉重复值的列拖到右边的列表框中,单击 【 OK】 按钮即可。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 64
12.3.3 数据的导入、导出和检索
1.数据的导入和导出
数据的灌入、导出操作与数据表数据的导入、导出操作相同,读者可参见 8.5.4
节。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 65
12.3.3 数据的导入、导出和检索
2.数据检索
( 1)分阶段检索
当一个数据窗口对象要检索的数据量非常大时,
在所有行被检索出来并显示给用户之前,屏幕无任何反映,用户会感到有明显的延时。在这样的数据窗口对象中,可以为数据窗口指定分阶段检索属性,让 PowerBuilder只是检索数据窗口控件显示数据并把控制权转给用户前所必需的行数,这样,可以提高应用程序的反应速度,减少延时。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 66
12.3.3 数据的导入、导出和检索
例如,如果一个数据窗口对象一次仅可以显示 10行数据,设定分阶段检索后,在将数据显示给用户之前
PowerBuilder 可能仅仅检索大于 10的很少量的数据
(例如 11条数据)。当用户按下 PagesDown键或使用滚动条翻页时,PowerBuilder继续检索下面的必须的显示数据。这样边检索边显示,由于每次检索的数据量小,用户一般不会感觉到有明显的延时。
设置分阶段检索的方法是在数据窗口画板打开时,选择菜单 【 Rows】 | 【 Retrieve Options】 | 【 Rows As
Needed】 。再次选择上述菜单会去掉分阶段检索。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 67
12.3.3 数据的导入、导出和检索
( 2)把检索出的数据存储到磁盘
如果想使得 PowerBuilder和其它应用程序可利用的内存得到最大化,可以让 PowerBuilder将检索出来的数据存放到硬盘的一个临时文件中,
而不是全部保存到内存中。程序运行期间,
PowerBuilder将会根据显示数据的需要在临时文件和内存之间交换数据。
只要选择菜单 【 Rows】 | 【 Retrieve
Options】 | 【 Rows to Disk】 即可。再次选择该菜单项将会去掉 Rows to Disk选择。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 68
12.4 在脚本中引用数据窗口对象和数据窗口项
12.4.1 数据窗口对象的引用
– Dataobject属性:指定数据窗口对象
– 例,dw_1.dataobject='d_no_name?
12.4.2 数据窗口项的引用
1.通过表达式引用数据窗口项
– (1)通过列名引用
– dwcontrol.Object.columnname{.buffer}{
.current|,original}{[rownumber]}
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 69
dwcontrol,数据窗口控件名称 。
Object,必选部分,用来指定一个数据窗口对象的数据值 。
Columnname,必选部分,用来指定要操作的数据窗口列名
Buffer,可选部分,指明要从哪个缓冲区中取得数据,用户可以在 Primary( 主缓冲区 ),Delete
( 删除缓冲区 ) 或 Filter( 过滤缓冲区 ) 中选择一个,默认设置为 Primary缓冲区 。
,current|,original,用来指明是从原始数据
( 从数据库中检索出来的数据 ) 还是从当前缓冲区中取得数据 。 current为默认设置,指当前数据缓冲区 。 original指原始数据 。
rownumber,可选字段,指定数据窗口的行号或者某一范围 。
1.通过表达式引用数据窗口项数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 70
1.通过表达式引用数据窗口项
例
–dw_1.Object.fpno[1] = 5
– 语句把数据 5赋值给主缓冲区中的第一行的 fpno列项:
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 71
( 2)访问所有行
用法与上述的调用格式类似,不同之处是省略了访问数据所在的行号:
dwcontrol.Object.columnname{.buffer}{.current
|,original}
例如,下列语句从当前主缓冲区中获得 shdw列的所有行的数据,并赋值给一个已定义的数组:
string shdw_Array[]
shdw_Array =dw_1.Object,shdw.Primary
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 72
( 3)通过列号引用数据窗口项
使用列号引用数据窗口项的一般格式如下:
dwcontrol.Object.col_number{.buffer}{.current|,original}{[rownum]}
各参数的含义与前面的含义类似,其中 col_number用来指定一个数据窗口列号。
注释:通过列号引用列时,在列号前要加 #号。例如 #2表示数据窗口对象的 SQL SELECT语句中的第 2列。
例如,从过滤缓冲区中获得列 shdw(列号为 3)的第 3行到第 5行的数据并赋值给一个已定义的数组:
string shdw_Array[]
shdw_array=dw_1.Object.#3.Filter[3,5]
sle_2.text=shdw_Array[1]+"--"+shdw_Array[2]+"--"+shdw_Array[3]
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 73
2.通过函数引用数据窗口项
取得数据窗口缓冲区中特定行列的数据;
– GetItemString
– GetItemDateTime,GetItemTime、
GetItemNumber,GetItemDecimal
– GetItem
设置数据窗口特定行列的数据值 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 74
string dwcontrol.GetItemString
(row,column
{,dwbuffer,originalvalue } )
– dwcontrol,数据窗口控件的名字 。
– row,指定要取得字符型数据项所在的行号 。
– column,指定要取得字符型数据项所在的列,可以时列号 ( 数值型 ) 或列名 ( 字符型 ) 。
– dwbuffer,指明要从哪个缓冲区中取得数据 。 默认设置是 Primary缓冲区 。
– originalvalue,用来指明是从原始数据还是从当前缓冲区中取得数据,True表示获得从数据库检索出来的原始数据; False( 默认 ) 表示获得当前缓冲区中的数据 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 75
例
rownum=dw_1.getrow() //取得当前行的行号
num_no =
dw_1.GetItemNumber(rownum,num
ber) //取得当前行,number列的值数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 76
设置数据窗口特定行列的数据值。
– SetItem,其语法格式如下:
–integer dwcontrol.SetItem (row,
column,value )
– row指定赋值项所在的行,
– column指赋值项所在的列,可以是列号或列名;
– value是要为数据项设置的值 。
– 例:
– Dw_1.setitem(dw_1.getrow(),sex,‘男 ‘ )
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 77
12.5 数据窗口的更新控制
1,数据窗口的更新属性
选择菜单【 Rows】 ∣ 【 Update
Properties】,弹出,Specify Update
Properties‖ 设置更新属性数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 78
12.5 数据窗口的更新控制数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 79
12.5 数据窗口的更新控制
对话框中各更新属性的含义如下:
( 1) Allow Updates(允许更新)复选框:用于指定该数据窗口是否具有可更新能力,选中此复选框后,才可以设置其它属性。
( 2) Table to Update(可更新的表)下拉列表框:每个数据窗口在每一时刻只可更新一个表的数据。此下拉列表框就是用来指定 当前数据窗口可更新的表。
( 3) Unique Key Columns(键列):键列用来标识表中将被更新的记录的一列或多列。 PowerBuilder在生成数据库的更新语句时,
将用这些键列构成 WHERE子句。键列可以示表的主键,也可以不是。
( 4) Updateable Columns(可更新列)列表框:用来设置当前数据窗口对象对当前可更新的表中哪些字段具有可更新能力。如果某已列未被指定为可更新列,那么,即使在数据窗口中修改了此 列的数据,它也不会向数据库提交。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 80
12.5 数据窗口的更新控制
( 5) Where Clause for Update/Delete (用于更新的 WHERE子句)
组框:用来实现对数据窗口的并发控制。当多个用户并发的更新一个表时,就需要为数据窗口设定更新数据库的条件。因为,如果应用程序在任何情况下都可以更新数据库的话,一个用户的操作可能会覆盖其它用户的更新。例如,在火车联机售票系统中,
几台售票客户机同时查询服务器,查询剩余车票(结果相同),
如果不加控制,有可能同一个座位的车票被售出两张甚至多张。 所以在多用户的 Client/Server结构的应用中,一定要进行并发控制。
在生成更新语句时,PowerBuilder通过产生不同的 WHERE子句来实现对更新的并发控制。在更新属性对话框的 Where Clause for
Update/Delete组框中选择不同的单选按钮,将产生不同的 WHERE
子句。
( 6) Key Columns(键列)单选按钮:在 WHERE子句中只包括键列。如果某键列已被修改,则更新无效。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 81
12.5 数据窗口的更新控制
( 7) Key and Updateable Columns(键列和可更新列)单选按钮:在 WHERE子句中包括键列和可更新的列。如果其中某列已被修改,则更新无效。
( 8) Key and Modify Columns(键列和被修改的列)单选按钮:在 WHERE子句中包括键列和所有被修改的列。如果某列已被修改,则更新无效。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 82
12.5 数据窗口的更新控制
2,Key Modification(键列的更新)组框
当键所在的列被修改时,PowerBuilder提供了两种不同的方式来实现对数据库的更新。在
Key Modification组框中可以通过选择不同的单选按钮来指定更新方式。
( 1) Use Delete then Insert:先删除表中当前记录,然后在插入一条新记录。
( 2) Use Update:直接修改当前记录。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 83
12.5 数据窗口的更新控制
3,Identify Column(标识列)下拉列表框
许多数据库管理系统支持这样一种列。当向表中插入一条新记录时,此列的值由数据库管理系统自动指定,称之为标识列。不同的数据库管理系统支持的标识列的类型也不同。例如,
Adaptive Server Anywhere允许定义其值自动增加的列。在,Specify Update Properties‖对话框中可以指定一个标识列。这样,当在数据窗口中新插入一行并提交后,PowerBuilder会自动把此列的值带回并显示出来。否则,需要重新检索才能看到此列的值。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 84
12.6 数据窗口的打印
12.6.1 打印预览
打印预览操作方法如下:
( 1)确保数据窗口的预览工作区已经打开,如果还未打开,可选择菜单 【 View】 ∣ 【 Preview】 将其打开。
( 2)选择菜单 【 File】 ∣ 【 Print Preview】,数据窗口预览工作区变为打印预览模式。
( 3)选择菜单 【 File】 ∣ 【 Print Preview Rulers】,打印预览模式会显示标尺,但该标尺不会打印出来。标尺的单位由数据窗口工作区属性的 General标签页的 Units决定。如图 12-55所示。
( 4)选择菜单 【 File】 ∣ 【 Print Preview Zoom】,弹出 Zoom对话框如图 12-56所示。选择不同的比例,然后单击 【 OK】 按钮,
可设置打印预览模式的显示比例。该设置只是一种显示设置,不是打印的实际尺寸。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 85
图 12-55 数据窗口对象的打印预览模式图 12-56 Zoom对话框数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 86
12.6.2 数据打印
用户在对数据窗口对象进行打印预览时,
还可将其中的数据打印出来。其步骤如下:
( 1)选择菜单 【 File】 ∣ 【 Print
Report】,弹出如图 12-57所示的 Print对话框。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 87
12.6.2 数据打印
( 2)在对话框的 Copies编辑框中设置报表的打印份数。
( 3)在组框 Page Range中指定打印的页码范围,All表示打印报表所有页; Current Page表示打印当前页; Pages单选按钮用于指定打印页,在后面的编辑框中输入打印的页码范围。
( 4)在 Print下拉列表框中选择 All Pages in Range(打印范围内的所有页),Even Pages(打印范围内的偶数页),Odd Pages(打印范围内的奇数页)。
( 5) Collate Copies复选框用来设置副本页的排列次序(打印次序),若选中该复选框,则报表逐份打印。若不选中该复选框,
则逐页打印。只有在选择打印多份报表时,才能体现出该复选框 的作用。
( 6)单击 【 Printer】 按钮可以选择打印机。
( 7)设置完成后,单击 【 OK】 按钮即可打印。
( 8)如果要把数据输出打印到一个文件中,则选择 Print to File复选框,单击 【 OK】 按钮,显示类似于保存对话框的 Print to File对话框。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 88
12.7 统计图的使用
12.7.1 统计图的组成标题值轴数据值轴值轴标签序列(组) 分类轴文本 分类轴标签分类轴图例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 89
12.7.1 统计图的组成
( 1)标题( title):统计图的标题。默认值为 title。定义后出现在统计图的顶部。如图 12-58的标题为“发票明细分类统计图”。
( 2)值轴( value):统计图的坐标轴之一。如果把统计图看作数学函数 y=f(x),则值轴代表 y轴。
( 3)分类轴( category):统计图的坐标轴之一。如果把统计图看作数学函数 y=f(x),则值轴代表 x轴。
( 4)序列( series):数据点的集合。相同数据点的数据组成一个序列(组)。每一序列(组)有同样的颜色或图案表示。例如,
上图中分合同统计分次付款情况,则分类轴为发票号,序列为收 费项目。
( 5)图例( legend):序列名。它表示统计图中每个序列的显示文本。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 90
12.7.2 统计图的种类
PowerBuilder提供的统计图可分为 6类:
面图、条状图、列图、线图、饼图、散点图、三维统计图、堆积图、其它。
1.面图、条状图、列图、线图面图 条状图 列图 线图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 91
12.7.2 统计图的种类
2.饼图( pie)
饼图是用图形方式显示同一序列数据点中各数据在整体中所占的比例的图形方式。在饼图中,
检索数据时,PowerBuilder会自动计算每个切片的百分比。
3.散点图( Scatter)
这类统计图不使用分类( series),它显示( x,
y)数据点(坐标点)。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 92
12.7.2 统计图的种类
4.三维统计图
三维统计图包括三维面图( 3D Area)、
三维条图( 3D Bar)、三维列图( 3D
Column)、三维线图( 3D Line)和三维饼图( 3D Pie)。
三维面图 三维条图 三维列图 三维线图 三维饼图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 93
12.7.2 统计图的种类
5.堆积图
在堆积图中,每个分类用一个条或列代表。堆积图包括堆积条图( Stacked Bar)
和堆积列图( Stacked)。
堆积条图 堆积列图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 94
12.7.2 统计图的种类
6.其它
包括实心条图( Solid Bar)、实心列图
( Solid Column)、实心堆积条图( Solid
Stacked Bar)、实心堆积列图( Solid
Stacked Column)。
实心条图 实心列图 实心堆积条图 实心堆积列图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 95
12.7.3 统计图属性定义
数据窗口中统计图对象的属性在数据窗口的属性的各标签页中定义。其 【 General】
标签页如图 12-59
所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 96
12.7.3 统计图属性定义
在 【 General】 标签页中可设置如下属性:
在 Title编辑框中输入统计图的标题文本。该文本将显示在统计图顶部。在文本中可以使用
,~n‖强制标题换行。
在 GraphType下拉列表框中选择统计图类型。
在 Legend下拉列表框中选择图例位置:默认为底部( Bottom)。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 97
12.7.3 统计图属性定义
统计图数据窗口 【 Data】 标签页如图 12-60所示。在 【 Data】
标签页中可设置以下属性:
在 Category列表框中选择分类轴列。
在 Value下拉列表框中选择值轴列。
选中 Series复选框则可以设置分类序列
在 Series下拉列表框中选择序列数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 98
12.7.3 统计图属性定义
【 Axis】 标签页
在 【 Axis】 标签页可设置统计图各轴标签文本。
在 Axis下拉列表框中选择 Category后,在 Label
编辑框中输入分类轴文本;在 Axis下拉列表框中选择 Value后,在 Label编辑框中输入值轴文本;在 Axis下拉列表框中选择 Series后,在
Label编辑框中输入序列文本。
在 【 Text】 标签页设置、各轴的标签及文本、
标题、图例等。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 99
12.8 数据窗口常用函数
12.8.1 连接事务对象的函数
– 1.Settransobject()函数
参数为事务对象
例,dw_1,Settransobject(sqlca)
– 2,SetTrans( )函数
– integer dwcontrol.SetTrans ( transaction transaction )
– SetTrans 将事务对象的值复制到属于数据窗口控件的一个内部事务对象中。当在脚本中使用了 SetTrans,数据窗口会使用它的内部事务对象在需要的时候自动的执行连接和断开操作,
任何错误的发生都会导致自动滚回操作。当使用了 SetTrans,
在脚本中不用使用像 CONNECT,COMMIT和 DISCONNECT
这样的 SQL语句。在数据窗口控件执行 Retrieve 或 Update函数后自动进行连接和断开连接操作。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 100
12.8 数据窗口常用函数
12.8.2 滚动数据行函数
– 1.Scroll( )和 ScrollToRow( )函数
long dwcontrol.Scroll ( long number )
number指定要滚动的方向和行数。 number为正数,
表示向下滚动;若 number为负数,表示向上滚动。
如果该函数执行成功,那么将返回数据窗口控件中可见的第一行的行号;如果执行失败,则返回
-1。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 101
12.8.2 滚动数据行函数
– ScrollToRow函数
integer dwcontrol.ScrollToRow ( long row )
参数 row指定要滚动到的行号。如果 row为 0,则滚动到第一行,
如果 row大于最后一行的行号,则滚动到最后一行。该函数执行成功,则返回值为 1,否则,返回 -1
注释:调用 ScrollToRoll函数后,指定的行变为当前行,如果该行在数据窗口控件中已经可见,则数据窗口控件中显示的行没有什么变化,否则,显示这一行
ScrollToRoll函数和其他数据窗口滚动函数并不能高亮度显示行。此时可使用 SelectRow函数高亮度显示该行以使用户知道这是当前行。
ScrollToRow函数和其他数据窗口滚动函数可能触发下列事件:
ItemChanged,ItemError,ItemFocusChanged、
RowFocusChanged。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 102
12.8 数据窗口常用函数
2.ScrollNextRow( )和 ScrollPriorRow( )函数
–long dwcontrol.ScrollNextRow ( )
–long dwcontrol.ScrollPriorRow ( )
– 作用:向上或向下滚动一行
3.ScrollNextPage( )和 ScrollPriorPage( )函数
–long dwcontrol.ScrollNextPage( )
–long dwcontrol.ScrollPriorPage( )
– 作用:向上或向下滚动一页数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 103
12.8.3 得到与设置数据项的函数
GetItem( )函数与 SetItem( )函数
在应用程序的脚本中可以使用 GetItem函数来访问指定行或列的值,该函数是针对数据窗口缓冲区的操作,
而不是数据窗口编辑控件中的数据。所以,在数据窗口某一数据项被修改,但还未送到缓冲区时,使用
GetItem函数取得的数据和数据窗口控件中的数据不一致。此时,可先使用 AcceptText函数将数据送到缓冲区,
再使用 GetItem函数取数据。
SetItem函数用于设置指定行和列的项的值,该值并不进行有效性检查,而是直接放到数据窗口的主缓冲区中。函数的具体用法参见本书 12.4.2节。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 104
12.8.4 可编辑控件函数
所谓可编辑控件函数是指与数据窗口的可编辑控件相关的函数。用户在输入数据时,实际上是输入到可编辑控件中。数据窗口当前行和列的值是指数据窗口缓冲区中的值。当用户编辑当前行和列的值的时候,该项的值作为文本数据被传送到用户可修改数据的可编辑控件中。
当用户改变焦点或调用 AcceptText函数后,数据窗口把可编辑控件中的数据移到对应的列中,
并成为主缓冲区中的数据。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 105
12.8.4 可编辑控件函数
1,AcceptText( )函数
AcceptText函数的功能是检验数据窗口控件的可编辑控件中的数据,并将其放入主缓冲区。
AcceptText函数的语法格式为:
int dwcontrol.acceptText ( )
该函数没有参数,执行成功时返回 1,失败时返回 -1
(例如,数据没有通过校验)。
注释:可以在数据窗口控件的 LoseFocus事件中调用
AcceptText函数,将可编辑控件中的数据送入主缓冲区。该函数的调用可能会触发 ItemChanged或
ItemError事件。注意:在 ItemChanged事件中调用
AcceptText函数不起作用。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 106
12.8.4 可编辑控件函数
2,GetText( )函数
GetText函数用来访问在当前行和列的可编辑控件中的数据。
GetText函数的语法格式为:
string dwcontrol.GetText ( )
例如,下面代码将返回可编辑控件中的文本:
string number
number=dw_1.GetText()
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 107
12.8.5 与数据库有关的函数
1.Retrieve()函数
– Retrieve函数的功能是用指定的事务对象从数据库中把数据检索到数据窗口进行显示。
– Retrieve函数的语法格式为,
– long dwcontrol.Retrieve ( { any
argument,any argument,,,} )
– 其中,argument是可选参数,它表示在数据窗口对象中定义的检索参数,这些参数的顺序必须和定义时的顺序相同 。
– 如果调用成功,则返回检索出的记录行数;否则,
返回 -1。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 108
12.8.5 与数据库有关的函数
2.InsertRow( )函数
InsertRow函数用来项数据窗口的主缓冲区中插入一条新的记录。
InsertRow函数的语法格式为:
long dwcontrol.InsertRow ( long row )
其中:参数 row表示在第 row行前插入一个新空白行。
若 row值为 0,则表示在最后插入新空白行。
例如,在本书实例用户管理窗口 w_yhgl的 【 增加 】 按钮的 Clicked事件代码为:
dw_1.InsertRow(0)
如果要实现在当前行之前插入空白记录。则对应代码为:
dw_1.InsertRow(dw_1.getrow())
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 109
12.8.5 与数据库有关的函数
3,DeleteRow( )函数
DeleteRow函数用来从主缓冲区中删除一行。只有当用户进行 UPDATE后,被删除的行才能从数据库中真正删除。
DeleteRow函数的语法格式为:
integer dwcontrol.DeleteRow ( long row )
其中:参数 row指要删除的行的行号。若
row为 0,表示删除当前行。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 110
12.8.5 与数据库有关的函数
例如,在本书实例窗口 w_yhgl的 【 删除 】 按钮的 Clicked事件代码为:
integer m_rtn
m_rtn = MessageBox("确认 ","真的删除当前记录吗?",Question!,YesNo!)
If m_rtn = 1 then
dw_1.DeleteRow(0)
m_rtn = dw_1.Update()
IF m_rtn = 1 THEN
COMMIT ;
ELSE
ROLLBACK ;
MessageBox("错误 ","删除过程有错误
",Exclamation!,OkCancel!)
END IF
End If
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 111
12.8.5 与数据库有关的函数
4,Update( )函数
Update函数用来把数据窗口上数据的变化更新到数据库中。
Update函数的语法格式为:
integer dwcontrol.Update({boolean accept {,boolean resetflag}})
其中:参数 accept是一个布尔值,如果该值为 true,表示在更新之前调用
AcceptText函数。参数 resetflag用来确定数据窗口更新后是否重设更新标记。
该函数执行成功,则返回 1,否则返回 -1。
例如,在本书实例窗口 w_yhgl中 【 保存 】 按钮的 Clicked事件代码为:
if dw_1.Update() > 0 then
commit;
else
messagebox("发票管理 ","对不起,无法对数据保存 !")
rollback;
end if
dw_1.retrieve()
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 112
12.8.5 与数据库有关的函数
5.SetSort( )和 Sort( )函数
– SetSort( )函数设置排序条件
– Sort( )函数执行排序操作
– integer dwcontrol.SetSort ( string
format )
– 其中:参数 format是一个表示排序标准的字符串,包括列名或列号 ( 列号前加 #号 ) 和排序顺序 ( A表示升序,
D表示降序 ) 。 如果 format值为 NULL,PowerBuilder将显示,Specify Sort Columns‖对话框,让用户选择排序条件 。 该函数执行成功时返回值为 1,否则返回 -1。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 113
12.8.5 与数据库有关的函数
–number dwcontrol.Sort ( )
– 该函数没有参数,执行成功时返回值为 1,
否则返回 -1。
– 例如,可使用如下代码实现按第一列升序,
第二列降序的顺序排序:
–dw_1.setSort("#1 A,#2 D")
–dw_1.sort()
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 114
12.8.5 与数据库有关的函数
6.SetFilter( )和 Filter( )函数
– SetFilter函数用来在程序中动态改变数据窗口的过滤条件 。 修改之后,再用 Filter函数过滤数据 。
integer dwcontrol.SetFilter ( string
format )
– 其中,format是个字符串,其值是作为过滤条件的逻辑表达式,表达式中可以包含列名或列号 。 如果
format值为 NULL,PowerBuilder将显示,Specify
Filter‖对话框,让用户输入过滤条件 。
– 该函数执行成功时返回 1,否则返回 -1。
integer dwcontrol.Filter ( )
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 115
12.8.5 与数据库有关的函数
例如,在本书实例的按发票号查询的窗口 w_fpno_tj窗口的 【 查询 】 按钮的 Clicked事件中用如下代码实现 dw_1的数据过滤:
string DWfilter,start_date,end_date,s_month
start_date = f_getdate(uo_start_date)
start_date = left(start_date,8) + "01"
s_month = string(month(date(start_date)) + 1)
end_date = string(year(date(start_date))) + "-0" + s_month + "-01"
if start_date = "" and end_date = "" then
DWfilter = ""
dw_1.SetFilter(DWfilter)
dw_1.Filter()
else
DWfilter = "date >= date('" + start_date + "') and date < date('" +
end_date + "')"
dw_1.setfilter(DWfilter)
dw_1.Filter()
end if
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 116
12.8.5 与数据库有关的函数
7.Reset( )函数
– Reset函数可以清除数据窗口中的所有行 。
其语法格式为:
–integer dwcontrol.Reset ( )
– 若该函数执行成功,则返回 1,否则返回 -1。
– 执行 Reset函数后再执行 Update( )函数并不会清除数据库中的数据,而删除数据窗口的所有行后再执行 Update( )函数则会清除数据库中的数据 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 117
12.8.5 与数据库有关的函数
8,SelectRow函数
该函数的作用是设置或取消记录行的高亮度显示。
在显示多行记录的数据窗口中,为了明确表示当前行,可以将当前行高亮度显示,而其它行非高亮度显示。其语法格式为:
integer dwcontrol.SelectRow ( long row,boolean
select )
参数 row要操作的记录行的行号,0表示操作所有行。
参数 select表示设置高亮度还是取消高亮度,取值 TRUE表示将 row指示的行高亮度显示。取值
FALSE.表示取消 row指示的行的高亮度显示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 118
12.8.5 与数据库有关的函数
例如,对应显示多条数据的数据窗口中实现功能 【 上一条 】 和 【 下一条 】 按钮的 Clicked事件代码分别为:
【 上一条 】 的 Clicked事件代码:
if dw_1.getrow()>1 then
dw_1.selectrow(0,false) //去掉所有行高亮度显示
dw_1.scrollPriorRow()
dw_1.selectrow(dw_1.getrow(),true)//使当前行亮度显示
else
messagebox("信息 ","对不起 ! 已经到达数据库顶部 ")
end if
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 119
12.8.5 与数据库有关的函数
【 下一条 】 的 Clicked事件代码:
integer endofdw
endofdw = dw_1.rowcount() //取记录总条数
if dw_1.getrow() < endofdw then //当前行号小于总行数
dw_1.selectrow(0,false)
dw_1.scrollNextRow()
dw_1.selectrow(dw_1.getrow(),true)
else
messagebox("信息 ","对不起 ! 已经到达数据库底部 ")
end if
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 120
本章小结
数据窗口对象是最能体现 PowerBuilder特色的具有强大数据处理功能的对象,在使用
PowerBuilder开发应用程序时,为了给用户提供进行数据操作、数据处理等交互工作的操作界面,数据窗口是最简单、最直接并且功能最强的工具。为了满足用户的各种使用需求,
PowerBuilder提供了 5种数据源和 11种显示风格,
在数据窗口对象中能够添加一些常用的控件对象,并且能够对文本、数据列、控件对象等单元分别进行属性设置,以满足不同用户的各种需求。
第 12章 数据窗口
本章重点内容
根据需要设计数据窗口对象
熟悉数据窗口画板及其基本操作
理解不同的数据源和显示风格
设置数据窗口的各种对象和属性
数据窗口的打印设置
统计图表的使用
数据库开发常用功能的实现方法数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 2
12.1 数据窗口
12.1.1 数据窗口的设计思想
– 一个数据窗口通常由 数据窗口控件 和 数据窗口对象两部分组成。
– 数据窗口控件 是被粘贴到窗口上的窗口级对象,提供了一个展示数据窗口对象的窗户,它可以在窗口中通过画板工具栏创建。
– 数据窗口对象 直接关联数据表,主要用于显示数据并允许用户增删改数据。通过在数据窗口中控件的
Data Object属性中设置有关的数据窗口对象的名字,
将数据窗口对象和窗口联系在一起,并把数据对象显示给用户。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 3
12.1 数据窗口
数据窗口有两个重要特性:数据源和数据显示风格。
– 数据源 指如何获取数据,即数据的来源。
– 显示风格 指数据窗口对象以何种格式显示给用户,
即用户如何和数据窗口交互。
– 为了有效的实现和用户的数据交互,可以在窗口或用户对象中放置一个 数据窗口控件,并将这个控件同创建的 数据窗口对象 关联起来,在应用程序中就可以通过这个数据窗口控件同数据源交换信息,最后还可以在窗口画板和用户对象画板中书写脚本,
动态地控制数据窗口控件及显示内容。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 4
12.1 数据窗口
12.1.2 数据窗口的创建
– ( 1) 单击工具条上的,新建,按钮,在 New对话框中选择 DataWindow标签。
– ( 2) 选择显示风格:在 DataWindow标签中可以看到有 11种显示风格,表示 11种不同的显示格式,可根据需要选择。
– ( 3) 选择数据源:有 5种可被选择的数据源:
Quick Select,SQL Select,Query,External和
Stored Procedure。
– 设置数据表及数据列
– 保存
数据窗口创建实例演示数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 5
12.2 典型数据窗口设计
数据窗口的显示风格是指数据在数据窗口中的显示格式。
11种显示风格
– 1,Composite( 复合风格)
– Composite( 复合风格)的特点是可将已存在的多个不同风格的数据窗口对象放在一个数据窗口中显示,
– 这种数据窗口本身没有数据源。
12.2.1 显示风格数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 6
12.2.1 数据窗口 —显 示风格
2,Crosstab ( 交叉表)
Crosstab ( 交叉表)风格是模拟电子表格的数据窗口表现风格。其特点是横向和纵向都有标题,可以对行和列的数据进行统计。 Crosstab主要用于分析和统计数据,可自动将检索到的数据分类或分组,
进行累计求和和求平均值等运算。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 7
CrossTab风格数据窗口示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 8
12.2.1数据窗口 —显 示风格
3,Freeform( 自由格式 )
Freeform是一种很常用的数据窗口显示风格,允许用户随意拖动列和列标签,使用非常灵活自由,因而得名 。 这种风格通常用于数据录入,更新删除 。 在显示时,通常是一条记录占据数据窗口一屏 。
默认时,Freeform风格的所有列显示标签都显示在字段的左边 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 9
Freeform风格示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 10
12.2.1 数据窗口 —显 示风格
4,Graph( 统计图风格 )
Graph( 统计图风格)是基于图形、图像的数据窗口显示风格,可以使用户直观的操作数据,
尤其适用于数据统计。在创建 Graph风格的数据窗口对象过程中会弹出 12-14所示的,Define
Graph Data‖对话框。在 Category下拉列表框中选择作为横轴的字段,在 Values下拉列表框中选择作为纵轴的字段。在 Series下拉列表框中选择分类统计的依据。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 11
设定横轴列设定纵轴列设定分类轴
Graph风格数据窗口的创建数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 12
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 13
预览窗口数据窗口设计结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 14
12.2.1 数据窗口 —显 示风格
5,Grid( 网格风格 )
Grid( 网格)风格的数据窗口的主要特点是:
以带线的电子表格的形式显示数据,有多列、
多行,数据的与列之间用线隔开。数据的每一项都放在网格之中。在设计数据窗口对象时不能移动列和列标题,也不能添加列和列标题。
但在程序执行时却可以移动每一列,以改变各列的宽度和列的排列顺序。由于它以整齐的方式显示数据,因此它常常用于查询数据量较大的数据窗口或打印报表。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 15
Grid风格数据窗口示例数据窗口工作区数据窗口预览工作区数据窗口列工作区对象属性对话框数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 16
12.2.1 数据窗口 —显 示风格
6,Group( 分组风格 )
Group风格为数据窗口提供了一种对数据窗口分组显示的简便方法 。 所谓分组指将数据按某一数据项值的不同分开显示 。
在这种风格下,每一组都带有统计数据,
适合于显示有组关系的数据 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 17
Group分组风格数据窗口示例
设置用于分组的列分组依据数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 18
单击 Next按钮,进入 Set Group Page Data对话框,用户可以根据需要进行相应的设置标题每组从新的一页开始显示每组结束后重置页号( 1)
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 19
结果数据窗口预览结果设计结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 20
12.2.1 数据窗口 —显 示风格
7,Label( 标签风格 )
Label风格的数据窗口对象是由多个标签组成的。它主要用在某些特定的场合,
如图书馆中的图书标签、贴在信封上的邮寄标签等。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 21
设置标签属性标签高度标签宽度每行显示标签个数每页每列显示标签个数标签的列间距标签的行间距定义数据在标签中的显示顺序按行优先顺序按列优先顺序标签宽度数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 22
页面设置设置页边距设置进纸方式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 23
Label风格设计结果设计结果预览结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 24
数据窗口 —显 示风格
8,N-UP( 分栏风格 )
N-UP风格所显示的数据窗口和 Word文字排版中的分栏处理类似 。 它能一行显示多条记录,从而一屏可以显示更多的记录,
尽量减少滚动浏览的次数 。 另外用它来显示一些定期产生的数据也是非常方便的,这样,可以把不同时期产生的数据在同一行显示,以便进行对比 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 25
N-UP风格示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 26
9,Tabular( 表格风格 )
Tabular风格类似于显示一列的 N-UP风格,
数据按列排列在数据窗口中,每一列数据都有相应的标题,用户可以任意调整字段标题和字段的位置,各列的位置可以交换,数据可以分组显示。 Tabular风格数据窗口常用于数据输入和报表中。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 27
Tabular( 表格风格)示例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 28
数据窗口 —数 据源
12.2.2 数据源的定义
数据源即数据的来源,指数据窗口对象获取数据的方式。 PowerBuilder有 5种数据源,Quick Select,SQL Select,Query、
External和 Stored Procedure 。 其中只有使用的 DBMS支持存储过程并可以返回结果集时,PowerBuilder才显示 Stored
Procedure数据源图标。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 29
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 30
12.2.2 数据源的定义
1,Quick Select数据源
– Quick Select数据源,顾名思义,是快速选择数据源,
它是定义数据源的最为简便、快捷的方法。
– Quick Select主要用于从一个表或多个通过外部键连接的表中选择某些数据列,而且这些数据列都是非计算列(即不是通过计算得到的列)。可以为 Quick
Select数据源的数据定义排序和检索条件,但不能进行数据分组,不能定义计算列和使用检索参数。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 31
12.2.2 数据源的定义
2,SQL Select数据源
– SQL Select数据源主要用于在一个或多个表中通过 SQL语句来选择数据(表之间不一定要有外部键关联)。这种数据源对 SELECT
语句具有更强的控制能力。使用 SQL Select
数据源可以对数据进行分组、添加计算列、
定义筛选条件和进行分组统计等操作,可以定义和使用检索条件,可以把系统生成的
SQL语句作为查询存储起来,并可以把它作为 Query数据源使用。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 32
12.2.2 数据源的定义
3,Query数据源
– Query数据源是一组可以重复使用并存储在文件中的一组 SQL语句。 Query数据源可以是 SQL Select数据源个选项定义的结果所创建的一个查询,也可以是数据库画板中所包含的 Query画板。
4,External数据源
– External数据源,即外部数据源,该数据源数据不是来自于数据库,而是来自于其它文件或由应用程序生成数据。由于 External数据源数据不是来自于数据库,所以应该为该类数据窗口定义列及其数据类型。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 33
12.2.2 数据源的定义
5,Stored Procedure数据源
– Stored Procedure数据源是利用数据库中定义的存储过程定义数据源,所谓存储过程是指事先编译好并存储在数据库中的 SQL语句。
用户可以调用存储过程完成查询。
– 如果要使用存储过程数据源,则首先要求所使用的数据库平台要支持存储过程,另外要在数据库中已经建立了相应的存储过程。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 34
12.2.3 数据窗口对象的属性
1.数据窗口对象总体属性
鼠标单击数据窗口画板的工作区内任何空白区域,在 Properties属性工作区设置。
Gr i d 风格特有属性数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 35
指定打印文档名,打印队列中标识该报表指定打印机指定页边距指定打印方向指定纸张大小指定纸张来源,自动或手工送纸可以使用默认打印机打印或预览时是否显示数据窗口对象上的按钮覆盖重名的打印作业设定分栏数目指定栏宽数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 36
2.数据窗口中对象的基本属性
数据窗口中的对象指文本 ( 标题,标签等 ),和数据对象 ( 包括列,计算域,汇总信息等 ) 等的属性 。
文本框的属性边框对齐方式文本数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 37
2.数据窗口中对象的基本属性
数据对象的属性
Format显示风格数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 38
Edit编辑风格下拉数据窗口数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 39
CheckBox样式 C h e c k B o x 风格设置结果如下,
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 40
DropDownDW样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 41
DropDownListBox样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 42
Edit Mask样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 43
RadioButtons样式数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 44
3.数据窗口的工作带汇总带细目带带标题带脚注带标题标识带细目标识带汇总标识带脚注标识带数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 45
表 12-1 数据窗口中各工作带的作用工作带名 作 用标题带
( Header)
用来显示位于屏幕或页面顶端的信息,如列标题
、报表标题及其它页眉信息(如日期等)
细目带
( Detail)
用来显示和操作来自数据源的数据,是数据窗口的主体汇总带
( Summary)
用来显示所有数据的汇总信息,如求总和、平均值等脚注带
( Footer)
显示位于屏幕或页面底端的信息,如页数、页号
、报表注释信息等数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 46
4,设置 Tab键次序
– 选择按钮,或选择菜单 【 Format】 | 【 Tab
Order】,会发现各列的上面均出现了红色的数字显示 。 用鼠标选中即可修改 Tab键值
( 以 10为单位,Tab键按数值递增的顺序跳转,0表示不能获得焦点 ),可以修改 。 修改完成后,用同样的方法返回 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 47
– 注释:为数据窗口对象新增的字段,或由多个数据表生成的数据窗口对象中的字段的
Tab值均为 0,即默认这些字段是不允许修改的,Tab键也不会跳到这些字段。如果需要,可以修改这些字段的 Tab值为一合适的非 0值(但不同列的 Tab值不能重复)。恰恰是利用 Tab值为 0这一特性,可以控制某些字段不能被修改。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 48
12.2.4 数据窗口对象上的控件选择一个对象创建一条直线添加一个计算域为选定的列添加平均值域添加按钮对象添加文本对象添加图片对象添加组框对象添加列添加统计图为选定的列添加计数域添加页号为选定的列添加求和域添加日期域添加 O L E 对象添加数据库 O L E 对象添加报表对象数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 49
1,添加按钮
方法同窗口控件
– 属性对话框的 General标签页中的 Action下拉列表框指定按钮的功能 。 具体如下:
Append Row,追加行;
Cancel,撤消 Retrieve( Yield) 操作;
Delete Row,删除行;
Filter,过滤;
Insert Row,插入空白行;
Page First,第一页;
Page Last,最后一页;
Page Next,后一页;
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 50
1.添加按钮
Page Prior,前一页;
Preview,打印预览;
Preview with Rules,显示打印预览标尺;
Print,打印;
Query Clear,在查询模式中去掉 WHERE子句;
Query Mode,切换查询模式的打开与关闭;
Query Sort,允许用户定义排序条件;
Retrieve,检索;
Retrieve( Yield),用于大量数据的检索,检索过程中,可用 Cancel终止当前检索;
Save Row as,将数据窗口中的数据另存为其它格式文件;
Sort,排序;
Update,提交;
User Defined,用户自定义 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 51
2.添加平均值、计数域、求和域
平均值,计数,求和图标主要用于在数据窗口对象的 Summary工作带添加汇总信息 。 添加汇总信息的方法是:
在数据窗口对象的 Detail工作带选择要进行汇总计算的列 ( 可以是计算列或计算域 ) 。 然后选 择 相 应 的 按 钮 或 选 择 菜 单
Insert→ Control→ Average,Sum或 Count,相应的计算表达式会自动添加到 Summary工作带 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 52
3.添加计算域或计算列
计算域和计算列主要用于添加基于列的数据计算(如学生总成绩)、或用于连接数据列等信息。
计算域和计算列含义不同,
– 计算列是指在 Select画板里直接为 SELECT语句定义的计算列,这些语句用于将数据检索到数据窗口对象。
– 计算域是指在数据窗口画板中通过图标添加的
Computed Field,可以在确定了 SELECT语句后定义计算域。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 53
3.添加计算域或计算列
计算列和计算域的区别:
– 计算列直接定义在数据源的 SQL SELECT语句上,
将计算结果带到数据窗口上,由于只有在数据窗口执行检索命令时,才执行相应的 SQL语句,所以数据窗口上的操作(不重新检索数据库时)不会引起计算列的变化,只有重新检索数据库时,计算列的内容才会发生变化。
– 计算域是定义在数据窗口对象之上,它是根据数据窗口的数据进行计算,因而数据能够动态变化。
使用计算域的方法
– 选择图标或选择菜单【 Insert】|【 Control】|
【 Computed Field】,然后在要放置计算域的位置单击鼠标,
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 54
4.添加新列
选择图标或选择菜单 【 Insert】 ∣ 【 Control】 ∣
【 Column】,在数据窗口对象上单击要放置该列的位置,弹出 Select Column对话框显示出数据窗口数据源的所有列,选择需要的列,然后单击 【 OK】 按钮即可 。
注释:数据窗口对象的列也可单击工具栏上的图标重新回到数据源对话框对数据列进行选择 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 55
12.3 数据窗口中数据处理
12.3.1 数据正确性检查
在数据窗口画板中设置校验规则的步骤如下:
1.打开要设置校验规则的数据列的属性对话框,单击属性对话框中某些属性旁边的图标,即可弹出校验规则对话框,
如图 12-49所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 56
12.3.1 数据正确性检查数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 57
12.3.1 数据正确性检查
2.在 Expression编辑框中输入校验表达式,可以使用 Functions和 columns提供的函数和列,然后单击 【 Verify】 按钮进行验证。如果表达式正确,出现,Expression is OK‖提示框。此时单击 【 OK】 按钮返回,此时会发现原来的红色按钮变成了绿色按钮。
注释:校验表达式可以是关系表达式或逻辑表达式,同时还可以是如下格式的 IF语句格式:
IF(关系表达式或逻辑表达式,数据正确时的提示信息,数据错误时的提示信息),
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 58
12.3 数据窗口中数据处理
12.3.2 数据排序、过滤、分组及去掉重复值
1.分组显示
分组显示是把数据窗口检索出的数据按一定条件分组,将具有相同特征的数据放在一起显示。对于要分组的数据,一般应先定义排序。分组显示的定义方法如下:
在数据窗口画板中,选择菜单 【 Rows】︱【 Create
Group】,弹出,Specify Group Columns‖对话框,
如图 12-50所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 59
12.3.2 数据排序、过滤、分组及去掉重复值图 12-50 ―Specify Group Columns‖对话框数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 60
12.3.2 数据排序、过滤、分组及去掉重复值
用鼠标把分组依据的列名拖动到右边的列表框中,单击 【 OK按钮 】 。在上图中
fpno列为发票号,分组完成后,数据窗口的预览结果如图 12-51所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 61
12.3.2 数据排序、过滤、分组及去掉重复值
2.去掉重复值
当数据窗口某个(些)列的数据具有重复值时,为了显示上的直观,可以使用去掉重复值的方法使其只显示一个。例如,将图 12-51的所属单位列去掉重复值后的结果如图 12-52所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 62
12.3.2 数据排序、过滤、分组及去掉重复值
图 12-52 按所属单位字段去掉重复值后的预览结果数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 63
12.3.2 数据排序、过滤、分组及去掉重复值
去掉重复值的方法是选择菜单
【 Rows】 | 【 Suppress Repeating
Values】,弹出,Specify Repeating Value
Suppression List‖对话框,如图 12-53所示。
用鼠标将要去掉重复值的列拖到右边的列表框中,单击 【 OK】 按钮即可。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 64
12.3.3 数据的导入、导出和检索
1.数据的导入和导出
数据的灌入、导出操作与数据表数据的导入、导出操作相同,读者可参见 8.5.4
节。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 65
12.3.3 数据的导入、导出和检索
2.数据检索
( 1)分阶段检索
当一个数据窗口对象要检索的数据量非常大时,
在所有行被检索出来并显示给用户之前,屏幕无任何反映,用户会感到有明显的延时。在这样的数据窗口对象中,可以为数据窗口指定分阶段检索属性,让 PowerBuilder只是检索数据窗口控件显示数据并把控制权转给用户前所必需的行数,这样,可以提高应用程序的反应速度,减少延时。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 66
12.3.3 数据的导入、导出和检索
例如,如果一个数据窗口对象一次仅可以显示 10行数据,设定分阶段检索后,在将数据显示给用户之前
PowerBuilder 可能仅仅检索大于 10的很少量的数据
(例如 11条数据)。当用户按下 PagesDown键或使用滚动条翻页时,PowerBuilder继续检索下面的必须的显示数据。这样边检索边显示,由于每次检索的数据量小,用户一般不会感觉到有明显的延时。
设置分阶段检索的方法是在数据窗口画板打开时,选择菜单 【 Rows】 | 【 Retrieve Options】 | 【 Rows As
Needed】 。再次选择上述菜单会去掉分阶段检索。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 67
12.3.3 数据的导入、导出和检索
( 2)把检索出的数据存储到磁盘
如果想使得 PowerBuilder和其它应用程序可利用的内存得到最大化,可以让 PowerBuilder将检索出来的数据存放到硬盘的一个临时文件中,
而不是全部保存到内存中。程序运行期间,
PowerBuilder将会根据显示数据的需要在临时文件和内存之间交换数据。
只要选择菜单 【 Rows】 | 【 Retrieve
Options】 | 【 Rows to Disk】 即可。再次选择该菜单项将会去掉 Rows to Disk选择。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 68
12.4 在脚本中引用数据窗口对象和数据窗口项
12.4.1 数据窗口对象的引用
– Dataobject属性:指定数据窗口对象
– 例,dw_1.dataobject='d_no_name?
12.4.2 数据窗口项的引用
1.通过表达式引用数据窗口项
– (1)通过列名引用
– dwcontrol.Object.columnname{.buffer}{
.current|,original}{[rownumber]}
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 69
dwcontrol,数据窗口控件名称 。
Object,必选部分,用来指定一个数据窗口对象的数据值 。
Columnname,必选部分,用来指定要操作的数据窗口列名
Buffer,可选部分,指明要从哪个缓冲区中取得数据,用户可以在 Primary( 主缓冲区 ),Delete
( 删除缓冲区 ) 或 Filter( 过滤缓冲区 ) 中选择一个,默认设置为 Primary缓冲区 。
,current|,original,用来指明是从原始数据
( 从数据库中检索出来的数据 ) 还是从当前缓冲区中取得数据 。 current为默认设置,指当前数据缓冲区 。 original指原始数据 。
rownumber,可选字段,指定数据窗口的行号或者某一范围 。
1.通过表达式引用数据窗口项数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 70
1.通过表达式引用数据窗口项
例
–dw_1.Object.fpno[1] = 5
– 语句把数据 5赋值给主缓冲区中的第一行的 fpno列项:
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 71
( 2)访问所有行
用法与上述的调用格式类似,不同之处是省略了访问数据所在的行号:
dwcontrol.Object.columnname{.buffer}{.current
|,original}
例如,下列语句从当前主缓冲区中获得 shdw列的所有行的数据,并赋值给一个已定义的数组:
string shdw_Array[]
shdw_Array =dw_1.Object,shdw.Primary
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 72
( 3)通过列号引用数据窗口项
使用列号引用数据窗口项的一般格式如下:
dwcontrol.Object.col_number{.buffer}{.current|,original}{[rownum]}
各参数的含义与前面的含义类似,其中 col_number用来指定一个数据窗口列号。
注释:通过列号引用列时,在列号前要加 #号。例如 #2表示数据窗口对象的 SQL SELECT语句中的第 2列。
例如,从过滤缓冲区中获得列 shdw(列号为 3)的第 3行到第 5行的数据并赋值给一个已定义的数组:
string shdw_Array[]
shdw_array=dw_1.Object.#3.Filter[3,5]
sle_2.text=shdw_Array[1]+"--"+shdw_Array[2]+"--"+shdw_Array[3]
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 73
2.通过函数引用数据窗口项
取得数据窗口缓冲区中特定行列的数据;
– GetItemString
– GetItemDateTime,GetItemTime、
GetItemNumber,GetItemDecimal
– GetItem
设置数据窗口特定行列的数据值 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 74
string dwcontrol.GetItemString
(row,column
{,dwbuffer,originalvalue } )
– dwcontrol,数据窗口控件的名字 。
– row,指定要取得字符型数据项所在的行号 。
– column,指定要取得字符型数据项所在的列,可以时列号 ( 数值型 ) 或列名 ( 字符型 ) 。
– dwbuffer,指明要从哪个缓冲区中取得数据 。 默认设置是 Primary缓冲区 。
– originalvalue,用来指明是从原始数据还是从当前缓冲区中取得数据,True表示获得从数据库检索出来的原始数据; False( 默认 ) 表示获得当前缓冲区中的数据 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 75
例
rownum=dw_1.getrow() //取得当前行的行号
num_no =
dw_1.GetItemNumber(rownum,num
ber) //取得当前行,number列的值数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 76
设置数据窗口特定行列的数据值。
– SetItem,其语法格式如下:
–integer dwcontrol.SetItem (row,
column,value )
– row指定赋值项所在的行,
– column指赋值项所在的列,可以是列号或列名;
– value是要为数据项设置的值 。
– 例:
– Dw_1.setitem(dw_1.getrow(),sex,‘男 ‘ )
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 77
12.5 数据窗口的更新控制
1,数据窗口的更新属性
选择菜单【 Rows】 ∣ 【 Update
Properties】,弹出,Specify Update
Properties‖ 设置更新属性数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 78
12.5 数据窗口的更新控制数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 79
12.5 数据窗口的更新控制
对话框中各更新属性的含义如下:
( 1) Allow Updates(允许更新)复选框:用于指定该数据窗口是否具有可更新能力,选中此复选框后,才可以设置其它属性。
( 2) Table to Update(可更新的表)下拉列表框:每个数据窗口在每一时刻只可更新一个表的数据。此下拉列表框就是用来指定 当前数据窗口可更新的表。
( 3) Unique Key Columns(键列):键列用来标识表中将被更新的记录的一列或多列。 PowerBuilder在生成数据库的更新语句时,
将用这些键列构成 WHERE子句。键列可以示表的主键,也可以不是。
( 4) Updateable Columns(可更新列)列表框:用来设置当前数据窗口对象对当前可更新的表中哪些字段具有可更新能力。如果某已列未被指定为可更新列,那么,即使在数据窗口中修改了此 列的数据,它也不会向数据库提交。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 80
12.5 数据窗口的更新控制
( 5) Where Clause for Update/Delete (用于更新的 WHERE子句)
组框:用来实现对数据窗口的并发控制。当多个用户并发的更新一个表时,就需要为数据窗口设定更新数据库的条件。因为,如果应用程序在任何情况下都可以更新数据库的话,一个用户的操作可能会覆盖其它用户的更新。例如,在火车联机售票系统中,
几台售票客户机同时查询服务器,查询剩余车票(结果相同),
如果不加控制,有可能同一个座位的车票被售出两张甚至多张。 所以在多用户的 Client/Server结构的应用中,一定要进行并发控制。
在生成更新语句时,PowerBuilder通过产生不同的 WHERE子句来实现对更新的并发控制。在更新属性对话框的 Where Clause for
Update/Delete组框中选择不同的单选按钮,将产生不同的 WHERE
子句。
( 6) Key Columns(键列)单选按钮:在 WHERE子句中只包括键列。如果某键列已被修改,则更新无效。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 81
12.5 数据窗口的更新控制
( 7) Key and Updateable Columns(键列和可更新列)单选按钮:在 WHERE子句中包括键列和可更新的列。如果其中某列已被修改,则更新无效。
( 8) Key and Modify Columns(键列和被修改的列)单选按钮:在 WHERE子句中包括键列和所有被修改的列。如果某列已被修改,则更新无效。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 82
12.5 数据窗口的更新控制
2,Key Modification(键列的更新)组框
当键所在的列被修改时,PowerBuilder提供了两种不同的方式来实现对数据库的更新。在
Key Modification组框中可以通过选择不同的单选按钮来指定更新方式。
( 1) Use Delete then Insert:先删除表中当前记录,然后在插入一条新记录。
( 2) Use Update:直接修改当前记录。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 83
12.5 数据窗口的更新控制
3,Identify Column(标识列)下拉列表框
许多数据库管理系统支持这样一种列。当向表中插入一条新记录时,此列的值由数据库管理系统自动指定,称之为标识列。不同的数据库管理系统支持的标识列的类型也不同。例如,
Adaptive Server Anywhere允许定义其值自动增加的列。在,Specify Update Properties‖对话框中可以指定一个标识列。这样,当在数据窗口中新插入一行并提交后,PowerBuilder会自动把此列的值带回并显示出来。否则,需要重新检索才能看到此列的值。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 84
12.6 数据窗口的打印
12.6.1 打印预览
打印预览操作方法如下:
( 1)确保数据窗口的预览工作区已经打开,如果还未打开,可选择菜单 【 View】 ∣ 【 Preview】 将其打开。
( 2)选择菜单 【 File】 ∣ 【 Print Preview】,数据窗口预览工作区变为打印预览模式。
( 3)选择菜单 【 File】 ∣ 【 Print Preview Rulers】,打印预览模式会显示标尺,但该标尺不会打印出来。标尺的单位由数据窗口工作区属性的 General标签页的 Units决定。如图 12-55所示。
( 4)选择菜单 【 File】 ∣ 【 Print Preview Zoom】,弹出 Zoom对话框如图 12-56所示。选择不同的比例,然后单击 【 OK】 按钮,
可设置打印预览模式的显示比例。该设置只是一种显示设置,不是打印的实际尺寸。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 85
图 12-55 数据窗口对象的打印预览模式图 12-56 Zoom对话框数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 86
12.6.2 数据打印
用户在对数据窗口对象进行打印预览时,
还可将其中的数据打印出来。其步骤如下:
( 1)选择菜单 【 File】 ∣ 【 Print
Report】,弹出如图 12-57所示的 Print对话框。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 87
12.6.2 数据打印
( 2)在对话框的 Copies编辑框中设置报表的打印份数。
( 3)在组框 Page Range中指定打印的页码范围,All表示打印报表所有页; Current Page表示打印当前页; Pages单选按钮用于指定打印页,在后面的编辑框中输入打印的页码范围。
( 4)在 Print下拉列表框中选择 All Pages in Range(打印范围内的所有页),Even Pages(打印范围内的偶数页),Odd Pages(打印范围内的奇数页)。
( 5) Collate Copies复选框用来设置副本页的排列次序(打印次序),若选中该复选框,则报表逐份打印。若不选中该复选框,
则逐页打印。只有在选择打印多份报表时,才能体现出该复选框 的作用。
( 6)单击 【 Printer】 按钮可以选择打印机。
( 7)设置完成后,单击 【 OK】 按钮即可打印。
( 8)如果要把数据输出打印到一个文件中,则选择 Print to File复选框,单击 【 OK】 按钮,显示类似于保存对话框的 Print to File对话框。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 88
12.7 统计图的使用
12.7.1 统计图的组成标题值轴数据值轴值轴标签序列(组) 分类轴文本 分类轴标签分类轴图例数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 89
12.7.1 统计图的组成
( 1)标题( title):统计图的标题。默认值为 title。定义后出现在统计图的顶部。如图 12-58的标题为“发票明细分类统计图”。
( 2)值轴( value):统计图的坐标轴之一。如果把统计图看作数学函数 y=f(x),则值轴代表 y轴。
( 3)分类轴( category):统计图的坐标轴之一。如果把统计图看作数学函数 y=f(x),则值轴代表 x轴。
( 4)序列( series):数据点的集合。相同数据点的数据组成一个序列(组)。每一序列(组)有同样的颜色或图案表示。例如,
上图中分合同统计分次付款情况,则分类轴为发票号,序列为收 费项目。
( 5)图例( legend):序列名。它表示统计图中每个序列的显示文本。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 90
12.7.2 统计图的种类
PowerBuilder提供的统计图可分为 6类:
面图、条状图、列图、线图、饼图、散点图、三维统计图、堆积图、其它。
1.面图、条状图、列图、线图面图 条状图 列图 线图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 91
12.7.2 统计图的种类
2.饼图( pie)
饼图是用图形方式显示同一序列数据点中各数据在整体中所占的比例的图形方式。在饼图中,
检索数据时,PowerBuilder会自动计算每个切片的百分比。
3.散点图( Scatter)
这类统计图不使用分类( series),它显示( x,
y)数据点(坐标点)。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 92
12.7.2 统计图的种类
4.三维统计图
三维统计图包括三维面图( 3D Area)、
三维条图( 3D Bar)、三维列图( 3D
Column)、三维线图( 3D Line)和三维饼图( 3D Pie)。
三维面图 三维条图 三维列图 三维线图 三维饼图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 93
12.7.2 统计图的种类
5.堆积图
在堆积图中,每个分类用一个条或列代表。堆积图包括堆积条图( Stacked Bar)
和堆积列图( Stacked)。
堆积条图 堆积列图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 94
12.7.2 统计图的种类
6.其它
包括实心条图( Solid Bar)、实心列图
( Solid Column)、实心堆积条图( Solid
Stacked Bar)、实心堆积列图( Solid
Stacked Column)。
实心条图 实心列图 实心堆积条图 实心堆积列图数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 95
12.7.3 统计图属性定义
数据窗口中统计图对象的属性在数据窗口的属性的各标签页中定义。其 【 General】
标签页如图 12-59
所示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 96
12.7.3 统计图属性定义
在 【 General】 标签页中可设置如下属性:
在 Title编辑框中输入统计图的标题文本。该文本将显示在统计图顶部。在文本中可以使用
,~n‖强制标题换行。
在 GraphType下拉列表框中选择统计图类型。
在 Legend下拉列表框中选择图例位置:默认为底部( Bottom)。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 97
12.7.3 统计图属性定义
统计图数据窗口 【 Data】 标签页如图 12-60所示。在 【 Data】
标签页中可设置以下属性:
在 Category列表框中选择分类轴列。
在 Value下拉列表框中选择值轴列。
选中 Series复选框则可以设置分类序列
在 Series下拉列表框中选择序列数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 98
12.7.3 统计图属性定义
【 Axis】 标签页
在 【 Axis】 标签页可设置统计图各轴标签文本。
在 Axis下拉列表框中选择 Category后,在 Label
编辑框中输入分类轴文本;在 Axis下拉列表框中选择 Value后,在 Label编辑框中输入值轴文本;在 Axis下拉列表框中选择 Series后,在
Label编辑框中输入序列文本。
在 【 Text】 标签页设置、各轴的标签及文本、
标题、图例等。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 99
12.8 数据窗口常用函数
12.8.1 连接事务对象的函数
– 1.Settransobject()函数
参数为事务对象
例,dw_1,Settransobject(sqlca)
– 2,SetTrans( )函数
– integer dwcontrol.SetTrans ( transaction transaction )
– SetTrans 将事务对象的值复制到属于数据窗口控件的一个内部事务对象中。当在脚本中使用了 SetTrans,数据窗口会使用它的内部事务对象在需要的时候自动的执行连接和断开操作,
任何错误的发生都会导致自动滚回操作。当使用了 SetTrans,
在脚本中不用使用像 CONNECT,COMMIT和 DISCONNECT
这样的 SQL语句。在数据窗口控件执行 Retrieve 或 Update函数后自动进行连接和断开连接操作。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 100
12.8 数据窗口常用函数
12.8.2 滚动数据行函数
– 1.Scroll( )和 ScrollToRow( )函数
long dwcontrol.Scroll ( long number )
number指定要滚动的方向和行数。 number为正数,
表示向下滚动;若 number为负数,表示向上滚动。
如果该函数执行成功,那么将返回数据窗口控件中可见的第一行的行号;如果执行失败,则返回
-1。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 101
12.8.2 滚动数据行函数
– ScrollToRow函数
integer dwcontrol.ScrollToRow ( long row )
参数 row指定要滚动到的行号。如果 row为 0,则滚动到第一行,
如果 row大于最后一行的行号,则滚动到最后一行。该函数执行成功,则返回值为 1,否则,返回 -1
注释:调用 ScrollToRoll函数后,指定的行变为当前行,如果该行在数据窗口控件中已经可见,则数据窗口控件中显示的行没有什么变化,否则,显示这一行
ScrollToRoll函数和其他数据窗口滚动函数并不能高亮度显示行。此时可使用 SelectRow函数高亮度显示该行以使用户知道这是当前行。
ScrollToRow函数和其他数据窗口滚动函数可能触发下列事件:
ItemChanged,ItemError,ItemFocusChanged、
RowFocusChanged。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 102
12.8 数据窗口常用函数
2.ScrollNextRow( )和 ScrollPriorRow( )函数
–long dwcontrol.ScrollNextRow ( )
–long dwcontrol.ScrollPriorRow ( )
– 作用:向上或向下滚动一行
3.ScrollNextPage( )和 ScrollPriorPage( )函数
–long dwcontrol.ScrollNextPage( )
–long dwcontrol.ScrollPriorPage( )
– 作用:向上或向下滚动一页数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 103
12.8.3 得到与设置数据项的函数
GetItem( )函数与 SetItem( )函数
在应用程序的脚本中可以使用 GetItem函数来访问指定行或列的值,该函数是针对数据窗口缓冲区的操作,
而不是数据窗口编辑控件中的数据。所以,在数据窗口某一数据项被修改,但还未送到缓冲区时,使用
GetItem函数取得的数据和数据窗口控件中的数据不一致。此时,可先使用 AcceptText函数将数据送到缓冲区,
再使用 GetItem函数取数据。
SetItem函数用于设置指定行和列的项的值,该值并不进行有效性检查,而是直接放到数据窗口的主缓冲区中。函数的具体用法参见本书 12.4.2节。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 104
12.8.4 可编辑控件函数
所谓可编辑控件函数是指与数据窗口的可编辑控件相关的函数。用户在输入数据时,实际上是输入到可编辑控件中。数据窗口当前行和列的值是指数据窗口缓冲区中的值。当用户编辑当前行和列的值的时候,该项的值作为文本数据被传送到用户可修改数据的可编辑控件中。
当用户改变焦点或调用 AcceptText函数后,数据窗口把可编辑控件中的数据移到对应的列中,
并成为主缓冲区中的数据。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 105
12.8.4 可编辑控件函数
1,AcceptText( )函数
AcceptText函数的功能是检验数据窗口控件的可编辑控件中的数据,并将其放入主缓冲区。
AcceptText函数的语法格式为:
int dwcontrol.acceptText ( )
该函数没有参数,执行成功时返回 1,失败时返回 -1
(例如,数据没有通过校验)。
注释:可以在数据窗口控件的 LoseFocus事件中调用
AcceptText函数,将可编辑控件中的数据送入主缓冲区。该函数的调用可能会触发 ItemChanged或
ItemError事件。注意:在 ItemChanged事件中调用
AcceptText函数不起作用。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 106
12.8.4 可编辑控件函数
2,GetText( )函数
GetText函数用来访问在当前行和列的可编辑控件中的数据。
GetText函数的语法格式为:
string dwcontrol.GetText ( )
例如,下面代码将返回可编辑控件中的文本:
string number
number=dw_1.GetText()
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 107
12.8.5 与数据库有关的函数
1.Retrieve()函数
– Retrieve函数的功能是用指定的事务对象从数据库中把数据检索到数据窗口进行显示。
– Retrieve函数的语法格式为,
– long dwcontrol.Retrieve ( { any
argument,any argument,,,} )
– 其中,argument是可选参数,它表示在数据窗口对象中定义的检索参数,这些参数的顺序必须和定义时的顺序相同 。
– 如果调用成功,则返回检索出的记录行数;否则,
返回 -1。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 108
12.8.5 与数据库有关的函数
2.InsertRow( )函数
InsertRow函数用来项数据窗口的主缓冲区中插入一条新的记录。
InsertRow函数的语法格式为:
long dwcontrol.InsertRow ( long row )
其中:参数 row表示在第 row行前插入一个新空白行。
若 row值为 0,则表示在最后插入新空白行。
例如,在本书实例用户管理窗口 w_yhgl的 【 增加 】 按钮的 Clicked事件代码为:
dw_1.InsertRow(0)
如果要实现在当前行之前插入空白记录。则对应代码为:
dw_1.InsertRow(dw_1.getrow())
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 109
12.8.5 与数据库有关的函数
3,DeleteRow( )函数
DeleteRow函数用来从主缓冲区中删除一行。只有当用户进行 UPDATE后,被删除的行才能从数据库中真正删除。
DeleteRow函数的语法格式为:
integer dwcontrol.DeleteRow ( long row )
其中:参数 row指要删除的行的行号。若
row为 0,表示删除当前行。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 110
12.8.5 与数据库有关的函数
例如,在本书实例窗口 w_yhgl的 【 删除 】 按钮的 Clicked事件代码为:
integer m_rtn
m_rtn = MessageBox("确认 ","真的删除当前记录吗?",Question!,YesNo!)
If m_rtn = 1 then
dw_1.DeleteRow(0)
m_rtn = dw_1.Update()
IF m_rtn = 1 THEN
COMMIT ;
ELSE
ROLLBACK ;
MessageBox("错误 ","删除过程有错误
",Exclamation!,OkCancel!)
END IF
End If
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 111
12.8.5 与数据库有关的函数
4,Update( )函数
Update函数用来把数据窗口上数据的变化更新到数据库中。
Update函数的语法格式为:
integer dwcontrol.Update({boolean accept {,boolean resetflag}})
其中:参数 accept是一个布尔值,如果该值为 true,表示在更新之前调用
AcceptText函数。参数 resetflag用来确定数据窗口更新后是否重设更新标记。
该函数执行成功,则返回 1,否则返回 -1。
例如,在本书实例窗口 w_yhgl中 【 保存 】 按钮的 Clicked事件代码为:
if dw_1.Update() > 0 then
commit;
else
messagebox("发票管理 ","对不起,无法对数据保存 !")
rollback;
end if
dw_1.retrieve()
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 112
12.8.5 与数据库有关的函数
5.SetSort( )和 Sort( )函数
– SetSort( )函数设置排序条件
– Sort( )函数执行排序操作
– integer dwcontrol.SetSort ( string
format )
– 其中:参数 format是一个表示排序标准的字符串,包括列名或列号 ( 列号前加 #号 ) 和排序顺序 ( A表示升序,
D表示降序 ) 。 如果 format值为 NULL,PowerBuilder将显示,Specify Sort Columns‖对话框,让用户选择排序条件 。 该函数执行成功时返回值为 1,否则返回 -1。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 113
12.8.5 与数据库有关的函数
–number dwcontrol.Sort ( )
– 该函数没有参数,执行成功时返回值为 1,
否则返回 -1。
– 例如,可使用如下代码实现按第一列升序,
第二列降序的顺序排序:
–dw_1.setSort("#1 A,#2 D")
–dw_1.sort()
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 114
12.8.5 与数据库有关的函数
6.SetFilter( )和 Filter( )函数
– SetFilter函数用来在程序中动态改变数据窗口的过滤条件 。 修改之后,再用 Filter函数过滤数据 。
integer dwcontrol.SetFilter ( string
format )
– 其中,format是个字符串,其值是作为过滤条件的逻辑表达式,表达式中可以包含列名或列号 。 如果
format值为 NULL,PowerBuilder将显示,Specify
Filter‖对话框,让用户输入过滤条件 。
– 该函数执行成功时返回 1,否则返回 -1。
integer dwcontrol.Filter ( )
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 115
12.8.5 与数据库有关的函数
例如,在本书实例的按发票号查询的窗口 w_fpno_tj窗口的 【 查询 】 按钮的 Clicked事件中用如下代码实现 dw_1的数据过滤:
string DWfilter,start_date,end_date,s_month
start_date = f_getdate(uo_start_date)
start_date = left(start_date,8) + "01"
s_month = string(month(date(start_date)) + 1)
end_date = string(year(date(start_date))) + "-0" + s_month + "-01"
if start_date = "" and end_date = "" then
DWfilter = ""
dw_1.SetFilter(DWfilter)
dw_1.Filter()
else
DWfilter = "date >= date('" + start_date + "') and date < date('" +
end_date + "')"
dw_1.setfilter(DWfilter)
dw_1.Filter()
end if
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 116
12.8.5 与数据库有关的函数
7.Reset( )函数
– Reset函数可以清除数据窗口中的所有行 。
其语法格式为:
–integer dwcontrol.Reset ( )
– 若该函数执行成功,则返回 1,否则返回 -1。
– 执行 Reset函数后再执行 Update( )函数并不会清除数据库中的数据,而删除数据窗口的所有行后再执行 Update( )函数则会清除数据库中的数据 。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 117
12.8.5 与数据库有关的函数
8,SelectRow函数
该函数的作用是设置或取消记录行的高亮度显示。
在显示多行记录的数据窗口中,为了明确表示当前行,可以将当前行高亮度显示,而其它行非高亮度显示。其语法格式为:
integer dwcontrol.SelectRow ( long row,boolean
select )
参数 row要操作的记录行的行号,0表示操作所有行。
参数 select表示设置高亮度还是取消高亮度,取值 TRUE表示将 row指示的行高亮度显示。取值
FALSE.表示取消 row指示的行的高亮度显示。
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 118
12.8.5 与数据库有关的函数
例如,对应显示多条数据的数据窗口中实现功能 【 上一条 】 和 【 下一条 】 按钮的 Clicked事件代码分别为:
【 上一条 】 的 Clicked事件代码:
if dw_1.getrow()>1 then
dw_1.selectrow(0,false) //去掉所有行高亮度显示
dw_1.scrollPriorRow()
dw_1.selectrow(dw_1.getrow(),true)//使当前行亮度显示
else
messagebox("信息 ","对不起 ! 已经到达数据库顶部 ")
end if
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 119
12.8.5 与数据库有关的函数
【 下一条 】 的 Clicked事件代码:
integer endofdw
endofdw = dw_1.rowcount() //取记录总条数
if dw_1.getrow() < endofdw then //当前行号小于总行数
dw_1.selectrow(0,false)
dw_1.scrollNextRow()
dw_1.selectrow(dw_1.getrow(),true)
else
messagebox("信息 ","对不起 ! 已经到达数据库底部 ")
end if
数据库原理及应用 -“十一五”国家级规划教材数据库原理及开发 120
本章小结
数据窗口对象是最能体现 PowerBuilder特色的具有强大数据处理功能的对象,在使用
PowerBuilder开发应用程序时,为了给用户提供进行数据操作、数据处理等交互工作的操作界面,数据窗口是最简单、最直接并且功能最强的工具。为了满足用户的各种使用需求,
PowerBuilder提供了 5种数据源和 11种显示风格,
在数据窗口对象中能够添加一些常用的控件对象,并且能够对文本、数据列、控件对象等单元分别进行属性设置,以满足不同用户的各种需求。