powerbuilder实用技巧实现数据窗口多表.pdfVIP

  • 1
  • 0
  • 约4.08千字
  • 约 3页
  • 2025-06-27 发布于北京
  • 举报

powerbuilder实用技巧实现数据窗口多表.pdf

实现PB数据窗口的多表更新

(深圳:独孤求败2003-05-16)

PowerBuilder的数据窗口对象是其特有的智能对象,其封装性好、功能强大、表现形式丰富多样,

为此,许多MIS开发人员对PowerBuilder推崇备至,将其视为首选开发工具。

一般情况下,一个数据窗口只能更新一个数据库表,但在MIS开发过程中,我们经常遇到这种情

况:一个数据窗口中由两个或更多个数据库表作为数据源,并需要对其进行录入或修改,如何给出多表更

新的通用解决方案就成为MIS开发人员不容回避的问题。笔者在某管理信息系统的开发过程中,尝试了几

种双表更新的解决方法,选出一种比较好的方案,以飨读者。

一、具体步骤

1、在数据窗口建立时,选择SQLSelect,显示风格可以是Tabular、Grid或FreeForm中的任

一种。选出两表需要录入或修改的列,其中两表的主键和非空列必须选中,确定选择条件,建立连接关系。

2、在选单“Rows/Update”中选择第一个表的全部数据项为可更新项。

3、把两表需要修改项的TabOrder数值改为非0值,使其在数据窗口中成为可修改项。

为了使方案具有通用性,建立全局函数f_update_2table,有五个参数:dw_obj、table1、table

2、key1、key2,分别代表所要更新的数据窗口、两表表名和两表主键列名,其中dw_obj为DataWindow类

型,其余四参数均为String类型。该函数返回值为Boolean型,返回True表示成功,返回False表示失

败。

二、函数思路

1、先针对第一个数据库表调用Update函数更新。注意参数的使用:第一个参数作用是控制数据

窗口更新前是否强制性调用AcceptText(),在数据窗口更新前通过有效性验证;第二个参数是控制更新标

志的复位,为True时更新标志复位,为False时更新标志不复位。

2、更改数据窗口的UpdateTable属性,使其指向第二个表,并把第一个表的各数据项Update属

性和主键列的Key属性改为No,接着把第二个表的各数据项Update属性和主键列的Key属性改为Yes。

3、调用Update函数更新第二个表。

4、两表更新成功后,把两表的列属性、主键属性改回到初始状态,以便为下一次的两表更新调用

做好准备。

三、程序清单

//ColName:数据窗口列名

//Name1[],Name2[]:两数据库表选中项列名

//n1,n2:两数据库表选中项数量

//i:循环计数器

//Columns:数据窗口总列数

StringColName,Name1[],Name2[]

IntegerColumns,i,n1=0,n2=0

//下面程序:找出dw_obj的两表列名赋给Name1[],Name2[]

Columns=Integer(dw_obj.Describe(″DataWindow.Column.Count″))

FORi=1TOcolumns

ColName=Upper(dw_obj.Describe(″#″+String(i)+″.Name″))

IFLeft(ColName,Len(Table1))=Table1andColName〈〉Key1THEN

n1=n1+1

Name1[n1]=ColName

ENDIF

IFLeft(ColName,Len(Table2))=Table2andColName〈〉Key2THEN

文档评论(0)

1亿VIP精品文档

相关文档