DATAWINDOW的四个缓冲区
在PowerBuilder中,DataWindow是用户前端用来存储、操纵数据的对象。在每一个DataWindow对象中有4个二维表作为数据缓冲区,用来存储查询到的数据。用户在DataWindow中对数据处理系统内部的操作实际上都是将数据在这几个缓冲区中进行的修改和移动,最后在用户提交数据库时,系统根据这四个缓冲区中的信息形成SQL的IN-SERT,UPDATE,DELETE等语句。这四个缓冲区是:
1、PrimaryBuffer
这个缓冲区是存放填充窗口中DataWindow控件中数据的,调用DataWindow的Retrieve()函数和InsertRow()函数可以将数据填入这个缓冲区中。当使用有关DataWindow删除和过滤函数时,相应记录将从这一缓冲区中删除。而在执行DataWindow的Update()函数时,PowerBuilder将查看这一缓冲区中的记录,以形成SQLINSERT和UPDATE语句。
2、DeleteBuffer
这个缓冲区保存的是用DeleteRow()函数从PrimaryBuffer中删除的记录,执行Update()函数时,系统根据这一缓冲区的记录形成DELETE语句。
3、FilterBuffer
这个缓冲区存储的是从OriginalBuffer使用Filter()函数过滤到PrimaryBuffer中后剩余的记录。
4、OriginalBuffer
这一缓冲区存储的是DataWindow最初执行retrieve()函数时得到的全部记录。当提交数据库时,根据PrimaryBuffer生成的UPDATE语句和根据DeleteBuffer生成的DELETE语句都要依据这一缓冲区来构造这些SQL语句中的Where子句。
OriginalBuffer由PowerBuilder内部维护,Power-Builder所提供的任何函数都无法改变它的值,不过通过PowerBuilder所提供的GetItem…系列的函数可以读出DataWindow最初从数据库中查到的原始值。通过这些函数我们可以编程实现所谓的"Undo"功能,并且得到在使用乐观锁时形成提交数据库的WHERE子句。
如果您当前使用的DataWindow没有设置修改的权力,您将不能对Delete缓冲区和Original缓冲进行操作,而且当调用Update()时也将引起系统错误。
数据缓冲区的状态值
PrimaryBuffer和DeleteBuffer都有行级和列级的状态值,这个状态值是一个枚举类型。在提交时由该行的状态值来决定是否要产生SQL语句,其中PrimaryBuffer产生的是IN-SERT和UPDATE语句,而DeleteBuffer产生的是DELETE语句。我们用GetItemStatus()函数和SetItemStatus()函数可以对这一状态值作操纵。这一枚举状态有以下四种:
·NotModified!———该行或行的值为查询所得,没有发生改变。
·DataModified!———该行或列的值为查询所得,发生了改变。
·New!———该行或列为一插入的新行,数据没有发生改变(数据为空或缺省值)。
·NewModified!———该行或列为一插入的新行,数据发生改变。改变是通过用户键盘输入或调用了SetItem()函数。
在PowerBuilder中,DataWindow是用户前端用来存储、操纵数据的对象。在每一个DataWindow对象中有4个二维表作为数据缓冲区,用来存储查询到的数据。用户在DataWindow中对数据处理系统内部的操作实际上都是将数据在这几个缓冲区中进行的修改和移动,最后在用户提交数据库时,系统根据这四个缓冲区中的信息形成SQL的IN-SERT,UPDATE,DELETE等语句。这四个缓冲区是:
1、PrimaryBuffer
这个缓冲区是存放填充窗口中DataWindow控件中数据的,调用DataWindow的Retrieve()函数和InsertRow()函数可以将数据填入这个缓冲区中。当使用有关DataWindow删除和过滤函数时,相应记录将从这一缓冲区中删除。而在执行DataWindow的Update()函数时,PowerBuilder将查看这一缓冲区中的记录,以形成SQLINSERT和UPDATE语句。
2、DeleteBuffer
这个缓冲区保存的是用DeleteRow()函数从PrimaryBuffer中删除的记录,执行Update()函数时,系统根据这一缓冲区的记录形成DELETE语句。
财管 家园 fs119.net
3、FilterBuffer
这个缓冲区存储的是从OriginalBuffer使用Filter()函数过滤到PrimaryBuffer中后剩余的记录。
4、OriginalBuffer
这一缓冲区存储的是DataWindow最初执行retrieve()函数时得到的全部记录。当提交数据库时,根据PrimaryBuffer生成的UPDATE语句和根据DeleteBuffer生成的DELETE语句都要依据这一缓冲区来构造这些SQL语句中的Where子句。
OriginalBuffer由PowerBuilder内部维护,Power-Builder所提供的任何函数都无法改变它的值,不过通过PowerBuilder所提供的GetItem…系列的函数可以读出DataWindow最初从数据库中查到的原始值。通过这些函数我们可以编程实现所谓的"Undo"功能,并且得到在使用乐观锁时形成提交数据库的WHERE子句。
如果您当前使用的DataWindow没有设置修改的权力,您将不能对Delete缓冲区和Original缓冲进行操作,而且当调用Update()时也将引起系统错误。
财管 家园 fs119.net
数据缓冲区的状态值
PrimaryBuffer和DeleteBuffer都有行级和列级的状态值,这个状态值是一个枚举类型。在提交时由该行的状态值来决定是否要产生SQL语句,其中PrimaryBuffer产生的是IN-SERT和UPDATE语句,而DeleteBuffer产生的是DELETE语句。我们用GetItemStatus()函数和SetItemStatus()函数可以对这一状态值作操纵。这一枚举状态有以下四种:
·NotModified!———该行或行的值为查询所得,没有发生改变。
·DataModified!———该行或列的值为查询所得,发生了改变。
·New!———该行或列为一插入的新行,数据没有发生改变(数据为空或缺省值)。
·NewModified!———该行或列为一插入的新行,数据发生改变。改变是通过用户键盘输入或调用了SetItem()函数。
财管,家园,fs119.net
相关文章
PB中编写10进制到其他进制的转换 用PowerBuilder开发多媒体播放器 Powerbuilder中利用API实现动画 用PowerBuilder6.0建立B/S结构的 在POWERBUILDER中使用WINSOCK控 用PB5设计串口通讯程序 使用PB7.0开发Web应用 在PB中使用VC编制的DLL 在PowerBuilder中动态调用函数 PB中关于动态工资项目问题的解决 PB/Sybase系统开发中的数据库转 PB环境下分布式应用程序的开发 PowerBuilder实用技巧八则 在PB中用OLE存取blob类型数据 深入了解PowerBuilder的数据窗口 PowerBuilder数据窗口编程技巧十 实现PB数据窗口的多表更新 PB中数据窗口的精确页面打印技术 在PB7.0中实现多数据窗口的连续 在PB中如何实现数据模糊查询 PB中用WindowsAPI制作位图菜单 树形目录在PB中的实现与应用 用PowerBuilder实现多层C/S系统 多层C/S系统及其在PB中的应用
Google.cn搜索关键字:
数据 窗口 缓冲区 Buffer 函数 DataWindow 语句 Primary
Google.cn搜索相关文章:
谷歌中搜索全球网 PowerBuilder中数据窗口的数据缓冲区
百度中搜索 PowerBuilder中数据窗口的数据缓冲区
谷歌中搜索www.fs119.net PowerBuilder中数据窗口的数据缓冲区
上一篇:PB实现数据窗口动态排序的方法
Google.cn搜索相关文章:
谷歌中搜索全球网 PowerBuilder中数据窗口的数据缓冲区
百度中搜索 PowerBuilder中数据窗口的数据缓冲区
谷歌中搜索www.fs119.net PowerBuilder中数据窗口的数据缓冲区
下一篇:PB8.0应用程序编译发布技术研究
精品课程推荐
热点专题
最新主题
推荐大折扣培训课程