PB中协调多数据窗口数据操纵的一种解决方法

转载 2012年04月05日 16:17:13

PB中协调多数据窗口数据操纵的一种解决方法

(加入日期:2001-9-23)

保存文章至硬盘】【打印文章】【字体:

分享到: 0
华侨大学计算机系 潘孝铭 徐丽莉  

1、问题的提出
数据窗口是Power Builder中检索、表现和操纵数据的对象。如果一个数据表的列不多,用单数据窗口操纵数据很易实现,但在实际应用中,数据表的列数动辄几十,甚至上百也并不少见,这时用单数据窗口滚动显然不方便,一个自然的想法是采用TAB控件和TAB页,在每个TAB页上放置一个数据窗口控件,每个数据窗口控件分门别类操纵数据表的列,但随之而来的问题是如何协调分布在这些数据窗口中录入或修改数据的存储,针对每个数据窗口发布一个UPDATE()函数的调用不可行。我们在实际开发中经过探索,增加一个后台的数据窗口做中介,解决了多数据窗口操纵数据的问题。

2、协调多数据窗口数据操纵的一种解决方法
基本思路是:在进行数据操纵的数据窗口控件之外,另外放置一个数据窗口控件,设置其不可见,并设其数据窗口对象为一个选择了数据表中所有列的数据窗口,其他数据窗口控件中录入或修改的数据实时地传送过来,对该控件的数据进行更新操作即可。
不失一般性,下面以POWERBUILDER自带数据库psDemoDB.db中的customer表的数据录入为例来说明。
Customer表有"id","fname","lname","address","city","state","zip","phone","company"九个列,其中"id"为integer类型,其余均为char类型。
(1)创建数据窗口
建立三个数据窗口d_1、d_2、d_3,数据窗口d_1选"id","fname","lname"三列,d_2中选"address","city","state"三列,d_3选"zip",""phone","company_name"三列。再建立数据窗口d_4,选中数据表中的所有列。
(2)建TAB控件和TAB页
建立一个TAB控件tab_1,建立三个TAB页tabpage_1、tabpage_2、tabpage_3。
(3)建数据窗口控件
在(2)中建的三个TAB页中分别放置dw_1、dw_2、dw_3三个数据窗口控件,设其数据窗口对象分别为d_1、d_2、d_3。
另外,在窗口中放置一个数据窗口控件dw_4,不选其"visible"属性.
(4)编写代码
在tabb1.tab_page_1.dw_1的editchanged事件中编写代码如下:
//代码由此开始
//设置变量,id_value存放数据表中id列的值
int i_m,i_n,id_value  
string str_fname,str_lname
//取dw_1当前的行数
i_m=tab_1.tabpage_1.dw_1.getrow()  
//取dw_4当前的行数
i_n=dw_4.getrow()  

//tab_1.tabpage_1.dw_1及dw_4接收浮在数据窗口控件表面的数据
tab_1.tabpage_1.dw_1.accepttext()
dw_4.accepttext()

//取dw_1中的"id"列的值给变量id_value
id_value=tab_1.tabpage_1.dw_1.getitemnumber(i_m,"id")  
//将变量id_value的值赋给dw_4中"id"列  
dw_4.setitem(i_n,"id",id_value)  

//取dw_1中的"fname"列的值给变量str_fname
str_fname=tab_1.tabpage_1.dw_1.getitemstring(i_m,"fname")  
//将变量str_fname的值赋给dw_4中"fname"列
dw_4.setitem(i_n,"fname",str_fname)  

//取dw_1中的"lname"列的值给变量str_lname
str_lname=tab_1.tabpage_1.dw_1.getitemstring(i_m,"lname")  
//将变量str_lname的值赋给dw_4中"lname"列
dw_4.setitem(i_n,"lname",str_lname)  
//代码到此结束

tab1.tab_page_2.dw_2、tab1.tab_page_3.dw_3的editchanged事件代码可比照tab1.tab_page_1.dw_1的editchanged事件代码编写,从略。
程序在PB65和PB7中调试通过,程序运行时,无论新增数据,还是对dw_1、dw_2、dw_3中的数据列进行修改,数据都实时地传送给dw_4,只需对dw_4进行保存或更新操作,从而解决了多数据窗口数据操纵的协调问题。

PB数据窗口难得一见的技巧

PB基础知识 1、Datawindow object(数据窗口库对象)    数据源决定了数据窗口对象获取数据的方式。PowerBuild支持五种数据源: A、 快速选择(Quik Sele...
  • tlammon
  • tlammon
  • 2016年03月22日 10:36
  • 2923

pb中数据窗口函数小结(转)

pb中数据窗口函数小结(转) 一、连接数据库 连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。 语法...
  • tlammon
  • tlammon
  • 2016年03月19日 17:25
  • 911

PB数据窗口对象之字段的修改属性

数据窗口只能修改一个数据表。当数据窗口的数据来源于不止一个数据表时,可以用脚本控制数据窗口的修改属性来对数据表逐个进行修改。 当数据窗口是用来接受用户的手工录入数据时,应该设置两方面的属性才能确保数据...
  • u012369435
  • u012369435
  • 2014年07月04日 11:00
  • 1363

PB9核心之——数据窗口对象使用

概要 最近这几天一直在用pb做一个小系统,经过这几天对pb9的使用,发现pb9的核心是数据窗口对象的使用,通过使用数据窗口对象可以将数据库的记录显示到界面上,并且可以直接在前台对数据库的记录进行增删改...
  • zwk626542417
  • zwk626542417
  • 2014年03月06日 16:04
  • 8097

[PB]-数据窗口对象(一)

[PB]-数据窗口对象(一) 数据窗口对象的数据源 ---------- PB提供5种数据源:Quick Select(快速选择类型)、SQL Select(SQL选择类型)、Query(查...
  • tlammon
  • tlammon
  • 2016年05月12日 22:15
  • 2361

PB数据窗口对象之计算域、排列、过滤、分组和其他

计算域 计算域是指在数据窗口的设计状态下添加到数据窗口中的Computed Field部件,它是一个数据窗口部件,具有部件的属性特征。计算字段是指在数据窗口对应的SQL语句中添加的表达式,计算字段是...
  • u012369435
  • u012369435
  • 2014年07月04日 11:59
  • 1867

【PB】如何创建一个动态的数据窗口对象?

问:我想在程序运行中根据需要动态地建立一个数据窗口对象,该怎么做呢? 答:方法有四: 第一种方法:     在程序中用Describe()函数得到某个已经存在的数据窗口对象的源代码。如: ...
  • tlammon
  • tlammon
  • 2016年03月01日 13:16
  • 1842

PB]-子数据窗口

**通常的子数据窗口也就是下拉数据窗口。子数据窗口也是普通的数据窗口对象,没有什么特殊的地方,它的创建方法、可以使用的控件、编程时可以使用的函数等,都和普通的数据窗口相同。特殊的地方只是因为它放在了父...
  • tlammon
  • tlammon
  • 2016年03月20日 09:42
  • 485

pb数据窗口一些技取

标识当前行 〓标识当前行也就是给当前行加上醒目的标记,以便用户更清楚当前要对哪一行数据进行操作,尤其当用户的操作中间有停顿时,继续进行操作就特别需要知道哪个是当前行。这里的当前行不要狭隘地理...
  • tlammon
  • tlammon
  • 2016年03月27日 18:51
  • 2217

PB数据窗口对象之信息修改

〓修改数据窗口信息 为了在运行时修改数据窗口对象特征,应该使用Modify函数,而不是直接访问语法。该函数的语法如下: dwcontrol.Modify(modstring) 其中,dwcont...
  • u012369435
  • u012369435
  • 2014年07月04日 12:58
  • 1122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB中协调多数据窗口数据操纵的一种解决方法
举报原因:
原因补充:

(最多只允许输入30个字)