1--缓冲区的介绍
在应用程序运行时,用户对数据窗口进行的操作情况是很复杂的,删除、插入、修改等操作有可能都会发生。记录哪些数据修改过、哪些数据需要删除、哪些数据是新增加的等等,都是很重要的工作,以便数据保存时能够正确修改数据库。这些工作都是由数据窗口缓冲区来完成的。
数据窗口在运行时要创建四个缓冲区,分别是主缓冲区、删除缓冲区、过滤缓冲区和原始缓冲区,这四个缓冲区各司其职、共同配合,来保证数据窗口对数据的正确处理。下面分别加以介绍。
1.主缓冲区[Primary Buffer]--存放检索出来的数据,但不包括过滤掉和删除掉的数据。
最重要的一个缓冲区,保存的是当前显示在数据窗口中的所有数据以及它们的修改状态,函数中的缓冲区参数缺省也是该缓冲区,这个缓冲区是存放填充窗口中DataWindow控件中数据的,调用DataWindow的Retrieve()函数和InsertRow()函数可以将数据填入这个缓冲区中。当使用有关DataWindow删除和过滤函数时,相应记录将从这一缓冲区中删除。而在执行DataWindow的Update()函数时,PowerBuilder将查看这一缓冲区中的记录,以形成SQL INSERT和UPDATE语句。
2.删除缓冲区[Delete Buffer]--存放从主缓冲区中删除掉的数据。
该缓冲区保存的是用DeleteRow()或者dw_1.rowsmove(1,3,primary!,dw_1,1,delete!)函数从Primary Buffer中删除的记录,执行Update()函数时,系统根据这一缓冲区的记录形成DELETE语句。在数据没有提交到数据库之前,可以从该缓冲区中将数据恢复出来,数据提交后,该缓冲区中的数据清空。
3.过滤缓冲区[Filter Buffer]--存放从主缓冲区中过滤掉的数据。
该缓冲区中保存的是没有通过【过滤条件】的所有数据,这些数据在存储时同主缓冲区的数据一起生成相应的insert或update语句。存储的是从Original Buffer使用Filter()函数过滤到Primary Buffer中后剩余的记录。
4.原始缓冲区[Original Buffer]--存放从数据库里检索到的原始数据。
这一缓冲区存储的是DataWindow最初执行retrieve()函数时得到的全部记