多源数据窗口的数据修改(1)
2015-03-29 02:05
导读:计算机应用论文论文,多源数据窗口的数据修改(1)样式参考,免费教你怎么写,格式要求,科教论文网提供的这篇文章不错:摘要 在powerbulider中,数据窗口数据源来自两个或两个以上的表,对于这样的数
摘要 在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——