- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PowerBuilder数据窗口缓冲区与状态
详解
Powerbuilder(pb)的datawindow(数据窗口)的各个缓冲区和状态是pb数据窗口的非常重要的,对这些概念的理解,将有助于我们认识pb数据窗口的优势。
基本概念
数据窗口的三个缓冲区:
Primary!
Delete!
Filter!
Getitemstatus(row,列名或者列号,缓冲区)
当要取整个行的状态时,列名或者列号用0表示
数据窗口中数据项状态
Notmodified! 从数据retrieve出来后没有改变过
Datamodified! 数据retrieve出来后有过改变
New! 数据窗口增加了一列但没有录入过数据,该列的状态就是new!
Newmodified! 数据窗口增加了一列,同时改列被录入了数据,该列的状态就是newmodified!
1、一个数据窗口dw_1,刚被retrieve出来后,结果如下:
编号 姓名 001 Ccc 002 ddd 所有的行和数据项状态都是notmodified
用geitemstatus(行号,列名,primary!)取每一数据项状态
用getitemstatus(行号,0,primary!)去行状态
2、当我把Ccc改为AAA后,如下:
编号 姓名 001 AAA 002 ddd
001,002,ddd三个格子所在的数据项状态仍旧是notmodified
AAA(原是Ccc)所在格子的数据项状态是datamodified
第一行(001,AAA)的行状态是datamodified
第二行(001,ddd)的行状态时notmodified
3、不保存,我把dw_1.insertrow(0)后,如下:
编号 姓名 001 AAA 002 Ddd 第一行,第二行的状态参考前面第2点。
第三行状态就是new!
请用getitemstatus(3,0,primary!)取第三行状态
4、不保存,当把第三行数据填充后,如下
编号 姓名 001 AAA 002 Ddd 003 FFF 第三行的状态将变为newmodified!
第三行的每一项将变为datamodified!
开发中实例:
表1
编号 姓名 金额 001 A 100 002 B 202 003 C 109 004 D 405 005 E 2000
表2
编号 姓名 消费或者充值记录 001 A 5 002 B 6 003 C 4 004 D 10 005 E 15 001 A 4 003 C 6 002 B 19
(因为是举例,请不要考虑数据库设置中的冗余概念,如表2中的姓名没必要等)
需求一、
删除表1中的数据的同时,把表2的数据也删除,必须删除,不考虑约束条件。如把表1中001,002删除了,需要把表2中所有001,002的记录删除,(【删除】和【保存】是两个按钮或菜单,就是说【删除】只是删除了前台的内容,不【保存】数据库中数据是没有被删除的,数据库需要【保存】执行的时候才真正执行删除),怎么做?
可以使用触发器;
可以在删除之前把表1记录下来,【保存】时对比表1,看那些数据缺少了;
3、……..
DeletedCount ( )
Getitemstring(row,列名,delete!,true)
(为什么用true,不用false呢?,true是从数据库取出来的默认值,false是当前值,如果删之前用户修改过编号,但是没有保存,用false就会有问题)
需求二、
把表1中编号001改为了A01,002改为001,003改为B05,004,005不变 (没有任何规律的),要求表二的编号也这么改过来。
可以使用触发器;
…….
循环取每一行的编号的状态(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中。
您可能关注的文档
最近下载
- 《膳食营养与肥胖症》课件.pptx VIP
- 2025年佛山市中考英语试题卷(含答案解析).docx
- 燃气公司安全知识安全生产管理人员试题及答案.docx VIP
- 2023年江苏省省级机关医院病案室岗位招聘笔试参考题库含答案详解.pdf VIP
- Unit1+Helping+at+home+Part+B+(5)+Let's+learn+~+Listen+and+chant(课件)-2025-2026学年人教PEP版(2024)英语四年级上册.pptx VIP
- 【劳务派遣人员服务项目】对本项目理解和认识.doc VIP
- 人教版高中生物必修2遗传与进化教材习题答案.pdf VIP
- 2024年普通高中物理课程标准解读.pptx VIP
- 海南省建筑施工现场安全生产-管理资料(一册和二册) .pdf VIP
- 水利水电工程危险源辨识与风险评价导则.pdf VIP
文档评论(0)