第十五讲 创建数据窗口对象 打印本页  
 
  数据窗口是PowerBuilder提供给开发人员快速建立应用程序的强有力的工具,也是PowerBuilder与其它面向对象的数据库应用前端开发工具的最主要区别。它以自动化的用户/数据库接口为开发人员最大限度地节省了时间和精力,但这种自动化并不限制开发人员的主观能动性,开发者能够以独具特色的方式灵活运用数据窗口。
  数据窗口包括两方面的内容:数据窗口对象和数据窗口控件。数据窗口对象主要用于展示数据并允许用户增删改数据,数据窗口控件则把数据窗口对象放置到窗口上并呈现在用户面前。
  本章主要介绍数据窗口对象创建的步骤。

  15.1 创建数据窗口对象

  单击画笔栏上的数据窗口画笔图标,系统打开“Select DataWindow”对话框;
  选择 “New”命令,系统打开“New DataWindow”对话框,该对话框包括三部分:
  “Data Source”组框――用于选择数据源;
  “Presentation Style”组框――用于指定数据窗口的显示风格
  “Options按钮――用于设置生成数据窗口时的各种选项;
  在“Options系统中,进入“DataWindowOptions”对话框;
  “Generation”标签页――设置数据窗口的显示风格的数据窗口的背景颜色、文本对象边框与颜色、列对象的边框与颜色等,以及数据窗口中对象的对齐方式、是否显示网格、以及网格的大小等选项;
  “Zoom”标签页――指定数据窗口的放大比例;
  具体定义数据源
  在数据窗口画笔工作区,给数据窗口添加对象、修改各对象的属性、设置过滤条件、指定排序方式、设置列对象的显示风格和编辑风格、改变数据窗口对象中各带所占区域的大小等。

  15.2 数据源的种类

  数据源决定了数据窗口对象获取数据的方式。PowerBuilder支持五种数据源:
  快速选择(Quick Select)
  能够创建简单的SQL Select语句,主要用于从一个表或由外部键连接的多个表中选择数据列,但不能生成计算列;
  SQL选择(SQL Select)
  以可视化的方式建立SQL Select语句,SQL Select语句的所有细节均能通过该界面创建,主要用于从一个或多个表中建立复杂的SQL Select语句,当然也能生成各种各样的计算列;
  查询(Qurey)数据源
  将以前创建的Qurey对象作为数据窗口的数据来源;
  外部(External)
  数据源用于让数据窗口访问数据库之外的数据,比如文本文件等;
  存储过程(Stored Procedure)
  直接利用保存在数据库中的存储过程作为数据源,这个数据源只有当当前连接的数据库支持存储过程时才有效,否则系统会自动隐藏该选项。

  15.3 Quick Select数据源的定义方法

  选择“Quick Select”数据源
  根据需要选择要检索数据的一个或几个表
  选择数据窗口中要包括的列
  在“Sort”行指定按哪些列排序进行排序以及排序方式。
  在“Criteria”行指定查询条件。
  进入数据窗口画板设计模式;
  保存定义的数据窗口

  15.4 SQL Select数据源的定义方法

  15.4.1 定义SQL Select数据源
  选择“SQL Select”数据源;
  选择数据窗口中要使用的一个或多个表,并进入SQL画板工作区;
  选择列出的表中所需列;
  在画板的工具箱中,定义Select语句的各种子句;
  点击画笔工具栏上的SQL图标 ,系统进入数据窗口画板工作区。

  15.4.2 定义检索条件
  “Where”标签页中定义SQL Select数据源的检索条件:
  单击“Column”下的第一个空白行,系统显示一个列名下拉列表框,从中选择一个列名;
  单击“Operator”下的第一行,系统显示一个运算符下拉列表框,从中选择所需的运算符;
  单击“Value”下的第一行,输入一个表达式,表达式由列名、数据库管理系统支持的函数、开发人员定义的检索参数、常量数值、或子查询组成。

  15.4.3 定义检索参数
  在定义检索条件时,如果使用检索参数,可以确定在运行时才能确定的值:
  选择“Retrieval Arguments菜单项
  在“Name”列键入参数名称;
  在“Type”列选择参数类型;
  单击“Add”按钮,可以增加一个参数
  单击“Insert”按钮,可以插入一个参数
  单击“Delete”按钮,可以删除某个参数;
  单击“OK”按钮关闭对话框;
  定义了检索参数后,就可以使用检索参数构造“Value”列上的表达式了。在表达式中使用检索参数时,需要在参数前放上个冒号(:)。

  15.4.4 指定排序方式
  当希望检索出的数据按某些列进行排序时,应该定义排序方式,步骤为:
  单击SQL工具栏中的“Sort”标签,
  把希望按其排序的列用鼠标从左边的列表框中拖曳到右边的列表框中,
  确定该列是升序排序或是降序排序。

  15.4.5 定义计算列
  计算列不是数据库表中的原始列,而是通过表达式运算得到的列,定义计算列的步骤为:
  在“Compute”标签的第一行中键入组成计算列的表达式。
  需要多个计算列时,通过单击将插入点移动到下一行,按上述方法构造组成计算列的表达式。
  15.4.6 定义分组
  在SQL Select数据源中,开发人员可根据应用程序的需要定义分组,方法是:
  单击SQL工具栏中的“Group”标签,
  将所有已选择的列拖至空白框内

  15.4.7 定义Having子句
  定义了分组条件后,开发人员还可以定义Having子句,以对分组进行过滤,只检索那些满足条件的分组。定义Having子句的步骤为:
  单击SQL工具栏中的“Having”标签,
  定义Having子句的条件表达式,方法与定义“Where”条件相同。

  15.4.8 显示当前定义条件下的SELECT语句
  在定义SQL Select数据源的过程中,随时都可以查看当前定义条件下的SELECT语句,
  方法是:单击SQL工具栏中的“Syntax”标签,相应的SELECT语句显示在该标签页中。

  15.4.9 去除查询结果中的重复值
  缺省情况下,SELECT语句根据条件检索出所有元组,这些元组中有可能存在重复值。如果希望去除检索结果中的重复值,那么:从“Design”菜单中选择“Distinct”菜单项,此后该菜单项前将显示一个选中符号,系统自动在SELECT语句中加上DISTINCT关键字。

  15.4.10 直接键入SELECT语句
  如果你十分熟悉SQL语句,或图形方式构造的SELECT语句不能满足应用程序的需要,那么你可以直接键入或编辑SELECT语句,以此定义SQL Select数据源,方法是:
  从“Design”菜单中选择“Convert to Syntax”菜单项,系统打开一个文本编辑窗口;
  键入或编辑SELECT语句;
  编写完SELECT语句后,如果SQL Select语句中未包含数据库专有函数,则可单击“Convert to Graphics”菜单项返回到图形方式。

  15.5 Query数据源

  Query数据源选取Query对象作为数据源,Query对象实际上就是条保存在应用库中的SELECT语句。定义Query对象的目的是为了在多个数据窗口中重复使用相同的SELECT语句而避免反复定义。
  与定义SQL Select数据源相似,Query对象中可以定义检索参数、指定排序方式和分组方式、定义检索条件等。

  15.6 External数据源

  External数据源从外部文件(比如文本文件)中提取数据,它是数据窗口唯一不需要连接数据库的数据源,其数据或由应用程序生成、或由用户输入。
  定义外部数据源的数据窗口时,必须定义它的每一列及其数据类型。

  15.7 Stored Procedure数据源

  Stored Procedure数据源就是把存储过程作为数据源。
  存储过程(StoredProcedure)是一组保存在数据库中的、经过预先编译和优化的、执行数据库操作的SQL语句。