浅议PB中数据窗口缓冲区与数据修改状态,filter

浅议PB中数据窗口缓冲区与数据修改状态,,之后不想修改之方法
置顶2014年12月14日 21:34:阅读数:4495
--引用
摘要:文章描述了中数据窗口缓冲区,详细介绍了数据窗口中行与列的修改状态以及提供的相关函数,并给出了几则应用实例 。
关键词:数据窗口缓冲区
中图分类号:TP311.131
文献标识码:A
是当今最先进的数据库开发工具之一,它以 开放性、可移植性以及易用性而闻名于世 。的突出特点是给应用开发人员提供了非常方便的开发环境和工具,而数据窗口技术则是其中最 耀眼的闪光点 。利用数据窗口,开发人员可以完成绝大多数数据操作任务 。本文从数据窗口中数据的修改状态的角度出发,介绍利用数据窗口进行应用开发的一些技 巧 。
1数据窗口缓冲区
在应用中,每个数据窗口控件都要检索4个内存缓冲区,它们是:
·主缓冲区():存放检索出来的数据,但不包括过滤掉和删除掉的数据 。
·过滤缓冲区():存放从主缓冲区中过滤掉的数据 。
·删除缓冲区():存放从主缓冲区中删除掉的数据 。
·原始缓冲区():存放从数据库里检索到的原始数据,它由在内部维护,可以利用该缓冲区中的数据进行数据恢复,在应用程序中实现Undo功能 。
2行与列的修改状态
行与列的修改状态在中为枚举类型值,它们包含: ·!:指定行或列处的信息与最初检索出的相同 。·!:指定列或行中某列处的信息在检索出后发生了改变 。
·New!:指定行是新行,但此行的列并未赋值 。本状态只适用于行,不适用于单个列 。
·!:指定行是新行且行中的列已经赋值 。新行的状态成为!,既可能是用户输入或使用函数造成的,也可能是由于它的某列具有缺省值 。本状态只适用于行,不适用于单个列 。
数据窗口中行或列的修改状态决定()函数将为该行或该列产生何种类型的SQL语句 。对主缓冲区和过滤缓冲区中的行,为状态是!的行产生语句,为状态是!的行产生 语句,只有状态是!的列才会包含在语句中 。对删除缓冲区中的行,若其状态是New!或 !,则语句不会为其产生语句 。
利用函数可获得某行或某列的修改状态,利用函数可改变某行或某列的修改状态 。
语法:
.(row,,)
.(row,,,)
对于如何改变状态,有一些限制,表1给出了这种限制,其中Yes表示可把初始状态改变为指定状态,No则表示不可以 。
表1数据修改状态设置约束
初始状态
指定状态
New!
!
!
!
New!
——
Yes
Yes
No
!
No
——
Yes
New!
!
!
Yes
——
Yes
!
Yes
Yes
Yes
——
通过观察表1,我们可以发现这样一种情况:假设某个记录的状态为New!,那么不能直接改为!但可先将它改为!,然后再改为! 。
利用函数、可以在不同控件(或对象)之间或同一控件(或对象)的不同缓冲区之间复制、移动数据行 。
语法:
.(,,,,,)
.(,,,,,)
当某行在删除缓冲区中时,或者在主缓冲区或过滤缓冲区中,并且状态为!或 !时,其更新标志被设置 。函数清除或中主缓冲区和过滤缓冲区中的 更新标志并清空其删除缓冲区 。清除更新标志后,所有行的状态为!或New! 。
语法:.()
3应用举例
(1)在数据窗口中,某些列常具有缺省值,或我们在执行了操作后立即使用 函数为某些列赋值 。如果用户执行了一个插入操作后立即关闭窗口会触发事件,这时会提示用户记录已经被修改,但用户并没 有感觉到对数据的修改 。为避免出现这种情况,可作如下处理: