找论文网 > 计算机论文 > 计算机应用 >

多源数据窗口的数据修改(1)

摘要  在powerbulider中,数据窗口数据源来自两个或两个以上的表,对于这样的数据窗口powerbulider默认是不可以更改的,但是实际往往需要我们对该数据进行修改,通过修改pb的默认设置,来重新设置它的Update 属性,数据窗口的Update Properties能够完成设置数据窗口是否可Update、可Update的表、可Update列等,但不能同时设置两个以上多表可更新,本文通过设置数据窗口属性和使用Modify()函数完成多表的更新修改。
关键词 数据窗口   函数  表
0 引言
     随着数据库技术在各行各业的广泛应用,作为企业级数据库前端开发工具的Power Builder日益成为开发人员的得力助手。PowerBuilder以其开放的体系结构,友好的用户界面和简洁高效的开发环境赢得业界的青睐。特别是数据窗口对象是PowerBuilder中最重要的概念之一,它是PowerBuilder应用区别于其它Windows应用的重要特征,同时也是PowerBuilder的价值所在。PowerBuilder应用通常通过数据窗对象从数据库或其它数据源取得数据并加以显示,其数据的输入、添加、修改和删除也大都通过数据窗对象来实现。多表的更新修改几乎在每个开发的系统中都会遇到,但是powerbuilder默认的数据窗口画板无法同时完成多表更新修改,实际开发中处理这个问题的方法也不尽相同。我们采用先设置一个表的属性然后更新修改另外一个表或者其他表的属性的方法来完成数据窗口的多表更新修改。
1 处理方法
      由于数据窗口数据源来自多个表,所以不能简单地用dw_1.update()来更新table,需要在程序中设置数据窗口画板,可更新一个表(及其可更新列),其他表为不可更新;更新完第一个表后,再设置另外其他的表为可更新修改,然后重新设置好表的可更新状态。
2 建立两张表及数据窗口
     利用PowerBuilder9自带的ASA8数据库建立两张表,表名分别为classtable 和studenttable
     建立这两张表calsstable和studenttable的sql语句如下:
classtable 表:
CREATE TABLE "dba"."classtable" ("classid" char(10) NOT NULL DEFAULT NULL, "classname" char(12) DEFAULT NULL , PRIMARY KEY ("classid")) ;
studenttable表:
CREATE TABLE "dba"."studenttable" ("studentid" char(12) NOT NULL DEFAULT NULL, "sname" char(6) DEFAULT NULL, "sex" char(2) DEFAULT NULL, "address" char(16) DEFAULT NULL, "telephone" char(12) DEFAULT NULL, "classid" char(10) DEFAULT NULL , PRIMARY KEY ("studentid")) ;
 并在两张表中录入几条验证测试数据如图1、图2。
           图1 classtable表 
 图2  studenttable表
建立数据窗口名为:d_grid_class_student,它的Select语句为
SELECT "classtable"."classid",  
        "classtable"."classname",  
        "studenttable"."studentid",  
       "studenttable"."sname",  
   "studenttable"."sex",  
       "studenttable"."address",  
         "studenttable"."telephone" 
    FROM "classtable",  
       "studenttable" 
      WHERE ( "classtable"."classid" = "studenttable"."classid" ) ;  
根据数据窗口d_grid_class_student的属性,设置列的taborder值,这样数据窗口可以更新,因为powerbuilde默认该数据窗口是不能更新的,例如我们可以将列"classtable"."classname"、"studenttable"."studentid"、"studenttable"."sname"、"studenttable"."sex",   "studenttable"."address"、 "studenttable"."telephone" 分别为10,20,30,40,50,60,由于"classtable"."classid"是两张表关联的列,所以我们不设置classid的taborder值,仍然是默认的0。如果想同时更新两张表的classid列, 我们可以用sql       语句在数据窗口控件的itemchanged事件中进行处理.
3 设置数据窗口属性
点击菜单Rows——>Update Properties,设置此数据窗口Allow Updates,Table to Update设为classtable,Updateable Columns为classtable.name。如图3同时也可

共2页: 1 [2] 下一页


八数码问题的JAVA设计与实现
一种文本分类数据挖掘的技术
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图