中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > PowerBuilder
PB中协调多数据窗口数据操纵的一种解决方法
作者:未知 时间:2005-08-07 21:04 出处:编程爱好者网站 责编:chinaitpower
              摘要:PB中协调多数据窗口数据操纵的一种解决方法
华侨大学计算机系 潘孝铭 徐丽莉  

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进行保存或更新操作,从而解决了多数据窗口数据操纵的协调问题。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有