欢迎来到天天文库
浏览记录
ID:25362962
大小:67.68 KB
页数:3页
时间:2018-11-19
《powerbuilder(pb)数据窗口(datawindow)缓冲区和状态解释》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、PowerBuilder数据窗口缓冲区与状态详解Powerbuilder(pb)的datawindow(数据窗口)的各个缓冲区和状态是pb数据窗口的非常重要的,对这些概念的理解,将有助于我们认识pb数据窗口的优势。基本概念数据窗口的三个缓冲区:Primary!Delete!Filter!Getitemstatus(row,列名或者列号,缓冲区)当要取整个行的状态时,列名或者列号用0表示数据窗口中数据项状态Notmodified!从数据retrieve出来后没有改变过Datamodified!数据retrieve出来后有过
2、改变New!数据窗口增加了一列但没有录入过数据,该列的状态就是new!Newmodified!数据窗口增加了一列,同时改列被录入了数据,该列的状态就是newmodified!1、一个数据窗口dw_1,刚被retrieve出来后,结果如下:编号姓名001Ccc002ddd所有的行和数据项状态都是notmodified用geitemstatus(行号,列名,primary!)取每一数据项状态用getitemstatus(行号,0,primary!)去行状态2、当我把Ccc改为AAA后,如下:编号姓名001AAA002ddd0
3、01,002,ddd三个格子所在的数据项状态仍旧是notmodifiedAAA(原是Ccc)所在格子的数据项状态是datamodified第一行(001,AAA)的行状态是datamodified第二行(001,ddd)的行状态时notmodified3、不保存,我把dw_1.insertrow(0)后,如下:编号姓名001AAA002Ddd第一行,第二行的状态参考前面第2点。第三行状态就是new!请用getitemstatus(3,0,primary!)取第三行状态4、不保存,当把第三行数据填充后,如下编号姓名001A
4、AA002Ddd003FFF第三行的状态将变为newmodified!第三行的每一项将变为datamodified!开发中实例:表1编号姓名金额001A100002B202003C109004D405005E2000表2编号姓名消费或者充值记录001A5002B6003C4004D10005E15001A4003C6002B19(因为是举例,请不要考虑数据库设置中的冗余概念,如表2中的姓名没必要等)需求一、删除表1中的数据的同时,把表2的数据也删除,必须删除,不考虑约束条件。如把表1中001,002删除了,需要把表2中所
5、有001,002的记录删除,(【删除】和【保存】是两个按钮或菜单,就是说【删除】只是删除了前台的内容,不【保存】数据库中数据是没有被删除的,数据库需要【保存】执行的时候才真正执行删除),怎么做?1、可以使用触发器;2、可以在删除之前把表1记录下来,【保存】时对比表1,看那些数据缺少了;3、……..DeletedCount()Getitemstring(row,列名,delete!,true)(为什么用true,不用false呢?,true是从数据库取出来的默认值,false是当前值,如果删之前用户修改过编号,但是没有保存
6、,用false就会有问题)需求二、把表1中编号001改为了A01,002改为001,003改为B05,004,005不变(没有任何规律的),要求表二的编号也这么改过来。1、可以使用触发器;…….循环取每一行的编号的状态(getitemstatus),看是否是datamodified!,如果是Getitemstring(row,列名,primary!,true)取到原始值Getitemstring(row,列名,primary!,false)取到修改后的值,等同于getitemstring(row,列名)根据原始值和修改后
7、的值对表2进行sql操作。需求三、表1中增加了一行记录(006,F,2000),表二同时也要增加这么一条记录(006,F,2000)…….循环取每一行编号的状态(getitemstatus),注意此处列名应该是0了。看是否是newmodified!,如果是,需要把这条记录增加到表2中。
此文档下载收益归作者所有