知识大全 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

相关参考