powerbuilder(pb)数据窗口(datawindow)缓冲区与状态解释

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PowerBuilder数据窗口缓冲区与状态
详解
Powerbuilder(pb)的datawindow(数据窗口)的各个缓冲区和状态是pb数据窗口的非常重要的,对这些概念的理解,将有助于我们认识pb数据窗口的优势。

基本概念
数据窗口的三个缓冲区:
Primary!
Delete!
Filter!
Getitemstatus(row,列名或者列号,缓冲区)
当要取整个行的状态时,列名或者列号用0表示
数据窗口中数据项状态
Notmodified! 从数据retrieve出来后没有改变过
Datamodified! 数据retrieve出来后有过改变
New! 数据窗口增加了一列但没有录入过数据,该列的状态就是new!
Newmodified! 数据窗口增加了一列,同时改列被录入了数据,该列的状态就是newmodified!
retrieve出来后,结果如下:
所有的行和数据项状态都是notmodified
用geitemstatus(行号,列名,primary!)取每一数据项状态
用getitemstatus(行号,0,primary!)去行状态
001,002,ddd三个格子所在的数据项状态仍旧是notmodified
AAA(原是Ccc)所在格子的数据项状态是datamodified
第一行(001,AAA)的行状态是datamodified
第二行(001,ddd)的行状态时notmodified
后,如下:
2点。

第三行状态就是new!
请用getitemstatus(3,0,primary!)取第三行状态
第三行的每一项将变为datamodified!
开发中实例:
表1
(因为是举例,请不要考虑数据库设置中的冗余概念,如表2中的姓名没必要等)
需求一、
删除表1中的数据的同时,把表2的数据也删除,必须删除,不考虑约束条件。

如把表1中001,002删除了,需要把表2中所有001,002的记录删除,(【删除】和【保存】是两个按钮或菜单,就是说【删除】只是删除了前台的内容,不【保存】数据库中数据是没有被
删除的,数据库需要【保存】执行的时候才真正执行删除),怎么做?
1、可以使用触发器;
2、可以在删除之前把表1记录下来,【保存】时对比表1,看那些数据缺少了;
3、……..
DeletedCount ( )
Getitemstring(row,列名,delete!,true)
(为什么用true,不用false呢?,true是从数据库取出来的默认值,false是当前值,如果删之前用户修改过编号,但是没有保存,用false就会有问题)
需求二、
把表1中编号001改为了A01,002改为001,003改为B05,004,005不变(没有任何规律的),要求表二的编号也这么改过来。

1、可以使用触发器;
…….
循环取每一行的编号的状态(getitemstatus),看是否是datamodified!,如果是
Getitemstring(row,列名,primary!,true) 取到原始值
Getitemstring(row,列名,primary!,false) 取到修改后的值,等同于getitemstring(row,列名)
根据原始值和修改后的值对表2进行sql操作。

需求三、
表1中增加了一行记录(006,F,2000),表二同时也要增加这么一条记录
(006,F,2000)
…….
循环取每一行编号的状态(getitemstatus),注意此处列名应该是0了。

看是否是newmodified!,如果是,需要把这条记录增加到表2中。

相关文档
最新文档