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

相关文章推荐

c3p0如何配置多数据源的解决方法

c3p0如何配置多数据源的解决方法 一、问题描述: 项目开发时,用c3p0管理数据连接。但是项目需要动态连接两个以上的数据库,如何用c3p0配置多数据源。 二、解决方法: 使用c3p0结合spring...
  • hw_2013
  • hw_2013
  • 2015年10月10日 16:11
  • 3072

SPRING多数据源切换的问题和解决方法

在应用中,需要热切换数据源。但发现如下问题:  Java代码    org.springframework.beans.factory.BeanCreationEx...
  • mixer_a
  • mixer_a
  • 2012年04月11日 21:24
  • 480

form 表的post提交,其中一个超多数据的input标签在后台获取数据被截断的解决方法

在开发中发现一个bug,前台提交的数据到后台获取的时候被截断了,前台代码 我用js给input标签赋值,这个值长度很长很长(如:一段超长的html代码),$("input...

C#串口通信时丢失数据的一种解决方法

C#串口通信时丢失数据的一种解决方法 刘凯 周云耀 武汉理工大学信息工程学院 武汉市(430070) E-mail:lk.6@163.com 摘要:C # 串行类( SerialPort )是...

数据结果集的一种透传解决方法

一、背景 很多同学都经历过这样一个应用环境:服务器把客户机的数据请求通过查询数据库得到了结果集,再把结果集返还给客户端。在这里,为了让服务器对客户端数据请求具有更方便的扩展或者收缩,需要让服务器...

关于服务器数据验证,一种比较优雅简便的Python解决方法

这两天整服务器代码遇到如题所说问题,不得已上了chinaunix发了个帖子,寻找一种比较好的解决方式,最后找到了一种比较好的方法,现记录在此。 原帖地址:http://bbs.chinaunix.ne...

SQL树形数据的一种解决方法

业务需求: 一份电梯购买合同包含多个设备,合同和设备信息分布存储于合同表和设备表,每一个合同有一个业绩归属人,每一个设备有一个业绩归属人,一般情况下 合同的业绩所属人跟所辖的设备业绩所属人都是一样...

在PB中动态修改数据窗口DW的SQL语句方法注意事项

数据库应用程序通常进行一项确定的工作,在编写和编译时就可以确定完整的SQL语句,但是在编译时不能确定SQL语句的具体格式和参数时,只能在程序运行过程中构造SQL语句,需要使用动态SQL语句。以Form...

[参考资料] PB数据窗口中各项指标的获取方法

1、得到当前鼠标所指对象所在的带区   string str_band   str_band=GetBandAtPointer() //得到当前鼠标所指对象所在的带区   str_b...

PB数据窗口中各项指标的获取方法

PB数据窗口中各项指标的获取方法 (2013-03-23 09:30:56) 转载▼     1、得到当前鼠标所指对象所在的带区   strin...
  • tlammon
  • tlammon
  • 2016年03月21日 20:46
  • 1105
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB中协调多数据窗口数据操纵的一种解决方法
举报原因:
原因补充:

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