powerbuilder:PowerBuilder中数据窗口的数据缓冲区

  摘 要 powerbuilder中数据窗口数据缓冲区应用广泛本文简述了pb中数据缓冲区原理、状态

  关键词 数据窗口; 数据缓冲

  DATAWINDOW 4个缓冲区

  在PowerBuilder中,DataWindow是用户前端用来存储、操纵数据对象在每个DataWindow对象中有4个 2维表作为数据缓冲区,用来存储查询到数据用户在DataWindow中对数据处理系统内部操作实际上都是将数据在这几个缓冲区中进行修改和移动,最后在用户提交数据库时,系统根据这 4个缓冲区中信息形成SQLIN-SERT,UPDATE,DELETE等语句这 4个缓冲区是:

  1、Primary Buffer

  这个缓冲区是存放填充窗口中DataWindowControl控件中数据,DataWindowRetrieve和InsertRow可以将数据填入这个缓冲区中当使用有关DataWindow删除和过滤时,相应记录将从这缓冲区中删除而在执行DataWindowUpdate时,PowerBuilder将查看这缓冲区中记录,以形成SQL INSERT和UPDATE语句

  2、Delete Buffer

  这个缓冲区保存是用DeleteRow从Primary Buffer中删除记录,执行Update时,系统根据这缓冲区记录形成DELETE语句

  3、Filter Buffer

  这个缓冲区存储是从Original Buffer使用Filter过滤到Primary Buffer中后剩余记录

  4、Original Buffer

  这缓冲区存储是DataWindow最初执行retrieve时得到全部记录当提交数据库时,根据Primary Buffer生成UPDATE语句和根据Delete Buffer生成DELETE语句都要依据这缓冲区来构造这些SQL语句中Where子句

  Original Buffer由PowerBuilder内部维护,Power-Builder所提供任何都无法改变它值,不过通过PowerBuilder所提供GetItem…系列可以读出DataWindow最初从数据库中查到原始值通过这些我们可以编程实现所谓"Undo"功能,并且得到在使用乐观锁时形成提交数据库WHERE子句

  如果您当前使用DataWindow没有设置修改权力,您将不能对Delete缓冲区和Original缓冲进行操作,而且当Update时也将引起系统

  数据缓冲区状态值

  Primary Buffer和Delete Buffer都有行级和列级状态值,这个状态值是个枚举类型在提交时由该行状态值来决定是否要产生SQL语句,其中Primary Buffer产生是IN-SERT和UPDATE语句,而Delete Buffer产生是DELETE语句我们用GetItemStatus和SetItemStatus可以对这状态值作操纵枚举状态有以下 4种:

  ·NotModied!———该行或行值为查询所得,没有发生改变

  ·DataModied!———该行或列值为查询所得,发生了改变

  ·New!———该行或列为插入新行,数据没有发生改变(数据为空或缺省值)

  ·NewModied!———该行或列为插入新行,数据发生改变改变是通过用户键盘输入或了SetItem

Tags:  powerbuilder教程 powerbuilder9.0 powerbuilder powerbuilder

延伸阅读

最新评论

发表评论