缓冲区类型
作用
主缓冲区 这个缓冲区保存填充窗口的datawindow控件中的所有数据行以及各行各列的状态。当用户调用datawindow 的retrieve函数和insertrow函数检索数据时,可以将数据填入这个缓冲区中。当使用有关datawindow删除和过滤函数时,相应记录将从这一缓冲区中被删除。而在执行datawindow的update函数时,powerbuilder将查看这一缓冲区中的记录,以形成SQLinsert和update语句。数据窗口只显示该缓冲区的内容,用户的所有操作也都是针对该缓冲区进行的。
删除缓冲区 这个缓冲区保存的是用deleterow函数从primary buffer中删除的记录,执行delete函数时,系统根据这一缓冲区的记录形成delete语句,如果删除操作被成功地提交到DBMS,那么所有被成功操作的数据都将被从这个缓冲区中删除。
过滤缓冲区 这一缓冲区保存的是从original buffer使用filter函数过滤到primary buffer中后剩余的记录,即满足select语句而不满足定义的过滤条件的数据行。过滤缓冲区与主缓冲区一起生成更新数据所需的insert语句和update语句。
原始缓冲区 这一缓冲区保存的是datawindow最初执行retrieve函数时得到的全部记录。当提交数据库时,根据primary buffer生成的update语句和根据delete buffer生成的delete语句都要依据这一缓冲区来构造这些SQL语句中的where子句。

下面的函数分别计算各个缓冲区中的记录数。

函数
返回值类型
作用
rowcount() long返回当前可用的行数,没有记录返回0,出错返回-1 获取数据窗口控件中当前可用的行数
deletedcount() long返回从数据窗口删除但未更新相关数据表的行的数目,没有删除行或删除后已更新相关数据表,返回0,失败返回-1 报告数据库有删除标记的行数
filteredcount() integer返回不符合过滤准则的行数,没有记录则返回0,出错返回-1 取得未通过当前的过滤准则而没有在数据窗口中显示的行数
modifiedcount() long返回主缓冲区中的已被修改的行的数目,没有则返回0,出错则返回-1 报告数据窗口中已修改但没有更新的行的数目

下面的例子演示了各个缓冲区的使用方法。

第一步,在"货物销售情况报表"窗口w_report_goodslist中按下图所示加入相应控件。其中dw_1控件为自定义数据窗口控件uo_dw。为该控件的getfocus,losefocus事件分别加入如下代码:

dw_cur=this //getfocus event

setnull(dw_cur) //losefocus event

第二步,在窗口的open事件中加入下列代码:

第三步,在按钮"删除缓冲区"中加入下列代码:

第四步,在按钮"修改缓冲区"中加入下列代码:

第五步,在按钮"过滤缓冲区"中加入下列代码:

运行该窗口,在dw_1数据窗口中添加、删除、修改记录并单击相应按钮查看各缓冲区的数据变化。

 

返回

数据空间