数据窗口是用户前端用来存储、操作数据的对象。具体可查询数据窗口缓冲区关系图进行了解。可以用dwBuffer来指定要操作哪个缓冲区:
主缓冲区(PrimaryBuffer):Primary!;
过滤缓冲区(FilterBuffer):Filter!;
删除缓冲区(DeleteBuffer):Delete!。
作用:
主缓冲区:存放填充窗口中的数据窗口控件中的数据,调用Retrieve()函数和InsertRow()函数使用;删除在此相应记录,使用数据窗口删除和过滤函数;查看在此记录,执行Update()函数。
删除缓冲区:保存被DeleteRow()函数从主缓冲区删除的记录,执行Update()函数时,会形成DELETE语句。
过滤缓冲区:存储使用Filter()函数过滤到主缓冲区后剩余的记录。
数据窗口编辑状态
大致概括为:数据窗口通过数据库检索数据时,符合过滤条件的数据进入过滤缓冲区,其他的数据都进入主缓冲区(显示的是这个),当改变过滤条件时,对应的主缓冲区和过滤缓冲区也会进行改变,而当用户删除某个记录后,记录会从主缓冲区进入删除缓冲区。
ps:如果当前数据窗口没有设置修改的权限,就无法对删除缓冲区和源缓冲区进行操作,调用Update()函数也会报错。
主缓冲区和删除缓冲区都有行级和列级的状态值,有以下四种:
NotModified!:该行或列的值为查询所得,未改变。
DataModipopowerbuilderwerbuilderfied!:改行或列的值为查询所得,发生改变。
New!:该行或列为新插入的行,数据未改变(为空或默认值)。
NewModified!:该行或列为新插入的行,数据发生改变(由用户键盘输入或调用SetItem()函数引起)。
转换状态
通过SetItemStatus函数将行或列转换为另一个状态,具体转换可以查询合法的编辑状态转换图。不能直接转换的可以通过多次转换来实现。

738

被折叠的 条评论
为什么被折叠?



