知识大全 PB中数据窗口的多表更新[2]

Posted

篇首语:人生就像爬坡,要一步一步来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PB中数据窗口的多表更新[2]相关的知识,希望对你有一定的参考价值。

PB中数据窗口的多表更新[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  二 函数思路

   先针对第一个数据库表调用Update函数更新 注意参数的使用 第一个参数作用是控制数据窗口更新前是否强制性调用AcceptText() 在数据窗口更新前通过有效性验证 第二个参数是控制更新标志的复位 为True时更新标志复位 为False时更新标志不复位

   更改数据窗口的UpdateTable属性 使其指向第二个表 并把第一个表的各数据项Update属性和主键列的Key属性改为No 接着把第二个表的各数据项Update属性和主键列的Key属性改为Yes

   调用Update函数更新第二个表

   两表更新成功后 把两表的列属性 主键属性改回到初始状态 以便为下一次的两表更新调用做好准备

  三 程序清单

  // ColName:数据窗口列名

  // Name [] Name []:两数据库表选中项列名

  // n n :两数据库表选中项数量

  // i:循环计数器

  // Columns:数据窗口总列数

  String ColName Name [] Name []

  Integer Columns i n = n =

  //下面程序 找出dw―obj的两表列名赋给Name [] Name []

  Columns=Integer(dw―obj Describe(″DataWindow Column Count″))

  FOR i= TO columns

  ColName=Upper(dw―obj Describe(″#″+String(i)+″ Name″))

  IF Left(ColName Len(Table ))=Table and ColName〈〉Key THEN

  n =n +

  Name [n ]=ColName

  END IF

  IF Left(ColName Len(Table ))=Table and ColName〈〉Key THEN

  n =n +

  Name [n ]=ColName

  END IF

  NEXT

  // 下面程序 存储dw―obj 确定返回值(True:成功 False:失败)

  IF dw_obj Update(True False)= THEN

  FOR i= TO n

  dw―obj Modify(Name [i ]+″ Update=No″)

  NEXT

  dw―obj Modify(Key +″ Key=No″)

  dw―obj Modify(″DataWindow Table Update

  Table=′ ″+Table +″ ′ ″)

  FOR i= TO n

  dw―obj Modify(Name [i ]+″ Update=Yes″)

  NEXT

  dw―obj Modify(Key +″ Key=Yes″)

  IF dw―obj Update()= THEN

  Commit;

  FOR i= TO n

  dw―obj Modify(Name [i ]+″ Update=Yes″)

  NEXT

  dw―obj Modify(Key +″ Key=Yes″)

  dw―obj Modify(″DataWindow Table UpdateTable=′ ″+Table +″ ′ ″)

  FOR i= TO n

  dw―obj Modify(Name [i ]+″ Update=No″)

  NEXT

  dw―obj Modify(Key +″ Key=No″)

  return True

  ELSE

  Rollback;

  return False

  END IF

  ELSE

  Rollback;

  return False

  END IF

  四 调用方法

  假设窗口名为w―update 数据窗口为dw― 数据库表名和主键名分别为t t k k 放置 存盘 按钮 按钮Clicked事件的Script

  语句如下

  dw_ AcceptText()

  IF dw― ModifiedCount()〉 or dw_ DeletedCount()〉 THEN

  IF MessageBox(″提示信息″ ″是否存盘?″ Question! YesNo!)= THEN

  IF f―update― table(dw― ″t ″ ″t ″ ″k ″ ″k ″) THEN

  Commit;

  ELSE

  Rollback;

  END IF

  END IF

  END IF

  综上所述 可以看出 该方案具有很好的可扩展性 稍加修改即可解决多表作为数据源的数据窗口的同步更新问题

       编辑推荐

       J EE高级框架实战培训视频教程

       数据仓库与数据挖掘培训视频教程

cha138/Article/program/PB/201311/24631

相关参考

知识大全 PB中同时“继承”多个用户自定义数据窗口对象[2]

PB中同时“继承”多个用户自定义数据窗口对象[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 PB中实现数据窗口动态排序的三种方法[2]

PB中实现数据窗口动态排序的三种方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  str

知识大全 PB中同时“继承”多个用户自定义数据窗口对象[3]

PB中同时“继承”多个用户自定义数据窗口对象[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 PB中同时“继承”多个用户自定义数据窗口对象[1]

PB中同时“继承”多个用户自定义数据窗口对象[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 利用PB动态创建数据窗口

利用PB动态创建数据窗口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用PowerBuild

知识大全 oracle的多表插入

  在业务处理过程中经常会碰到将业务数据按照条件分别插入不同的数据表的问题按照传统的处理方式需要分条件执行多次检索后分别插入不同的表单这样因为执行了重复的检索造成cpu和内存的浪费从oraclei开始

知识大全 PB数据窗口中用Enter键替代Tab键切换栏目

PB数据窗口中用Enter键替代Tab键切换栏目  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 PB在数据窗口中实现某一列的增量查询功能

PB在数据窗口中实现某一列的增量查询功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在PB的

知识大全 PB中实现数据窗口动态排序的三种方法[1]

PB中实现数据窗口动态排序的三种方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Po

知识大全 ASP.NET中使用表别名的多表查询

ASP.NET中使用表别名的多表查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一程序功能将