摘 要 powerbuilder中数据窗口
数据缓冲区应用广泛,本文简述了pb中数据缓冲区
原理、状态
字串8
关键词 数据窗口; 数据缓冲 字串5
DATAWINDOW
四个缓冲区
字串4
在PowerBuilder中,DataWindow是用户前端用来存储、操纵数据
对象。在每一个DataWindow对象中有4个二维表作为数据缓冲区,用来存储查询到
数据。用户在DataWindow中对数据处理系统内部
操作实际上都是将数据在这几个缓冲区中进行
修改和移动,最后在用户提交数据库时,系统根据这四个缓冲区中
信息形成SQL
IN-SERT,UPDATE,DELETE等语句。这四个缓冲区是:
字串8
1、Primary Buffer 字串3
这个缓冲区是存放填充窗口中DataWindow控件中数据
,调用DataWindow
Retrieve()函数和InsertRow()函数可以将数据填入这个缓冲区中。当使用有关DataWindow删除和过滤函数时,相应记录将从这一缓冲区中删除。而在执行DataWindow
Update()函数时,PowerBuilder将查看这一缓冲区中
记录,以形成SQL INSERT和UPDATE语句。 字串6
2、Delete Buffer
字串2
这个缓冲区保存
是用DeleteRow()函数从Primary Buffer中删除
记录,执行Update()函数时,系统根据这一缓冲区
记录形成DELETE语句。
字串9
3、Filter Buffer
这个缓冲区存储
是从Original Buffer使用Filter()函数过滤到Primary Buffer中后剩余
记录。 字串7
4、Original Buffer
这一缓冲区存储
是DataWindow最初执行retrieve()函数时得到
全部记录。当提交数据库时,根据Primary Buffer生成
UPDATE语句和根据Delete Buffer生成
DELETE语句都要依据这一缓冲区来构造这些SQL语句中
Where子句。 字串4
Original Buffer由PowerBuilder内部维护,Power-Builder所提供
任何函数都无法改变它
值,不过通过PowerBuilder所提供
GetItem…系列
函数可以读出DataWindow最初从数据库中查到
原始值。通过这些函数我们可以编程实现所谓
"Undo"功能,并且得到在使用乐观锁时形成提交数据库
WHERE子句。
字串2
如果您当前使用
DataWindow没有设置修改
权力,您将不能对Delete缓冲区和Original缓冲进行操作,而且当调用Update()时也将引起系统错误。
字串1
数据缓冲区
状态值 字串8
Primary Buffer和Delete Buffer都有行级和列级
状态值,这个状态值是一个枚举类型。在提交时由该行
状态值来决定是否要产生SQL语句,其中Primary Buffer产生
是IN-SERT和UPDATE语句,而Delete Buffer产生
是DELETE语句。我们用GetItemStatus()函数和SetItemStatus()函数可以对这一状态值作操纵。这一枚举状态有以下四种:
字串4
·NotModified!———该行或行
值为查询所得,没有发生改变。 字串6
·DataModified!———该行或列
值为查询所得,发生了改变。 字串6
·New!———该行或列为一插入
新行,数据没有发生改变(数据为空或缺省值)。 字串7
·NewModified!———该行或列为一插入
新行,数据发生改变。改变是通过用户键盘输入或调用了SetItem()函数。 字串9
字串6
![我要研发网[www.51dev.com]](/templets/images/toplogo.gif)
