精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Powerbuilder>>其他技巧>>软件工程与PB十日谈之Datawindow / Datas

主题:软件工程与PB十日谈之Datawindow / Datas
发信人: crazycode()
整理人: leitiger(2002-06-11 11:25:11), 站内信件
Datawindow / Datastore
Datawindow,数据窗口,作为PB的精华,可以说PB的大部分价值就体现在它身上
了。下面从原理、功能上谈谈我的体会。
Datawindow控件实质是一个窗口,而Datastore则是一个隐藏的窗口,即Visible
,Redraw属性都为假,这也是为何Datastore操作数据比Datawindow更快的一个原
因,它占用的系统资源更少,消耗的系统时间也更少。既然Datawindow与Datast
ore 
是一个窗口,那么窗口所具有的属性、消息如打开、关闭、重画它们也有。了解
这些对于深入应用数据窗口是非常也好处的。Datawindow与Datastore从某种程度
上讲是一个中间件,在用户界面与物理数据库之间加了一层功能,将它们隔离开
来,给用户界面提供更友好的数据操作,给数据库提供更稳定的数据显示。Data
window作为一项专利,是Powersoft(原来的PB开发商,后被SYBASE收购)向美国
国家专利与商标局注册的。
Datawindow/Datastore控件其基本原理就是Datawindow提供了数据显示界面的格
式位置定义,而Datawindow控件提供了数据操作方法与数据容器。为此PB为Data
window控件提供了操作数据库的函数与几个缓冲区(Primary!,Filter!等),
为Datawindow提供了几个显示层次(Foreground、Background等)。用户使用Da
tawindow控件的数据库操作函数,系统自动转换为特定数据库的SQL语言,提交给
数据库,待后台完成后 
,将数据返回给Datawindow控件,Datawindow控件再根据Datawindow的格式定义
将数据显示出来;另外Datawindow控件还要根据 
Datawindow 
的属性控制事物完整性等,还要处理一些自己特有的数据处理功能如Filter等。

Datawindow控件除具有Windows的窗口的属性与事件还有自己独特的函数与事件,
如Retr 
ievestart、Retrieveend、SqlPreview、Printpage等事件与Update,Reset 
等函数。这些事件有些是系统自动触发的如Dberror,SqlPreview等,这些事件一
般都有参数或有相关函数可以获得事件信息,因此我们可以在这些事件中获得、
修改数据处理信息。Datawindow函数需要手工调用,包括有关于后台数据处理的
Datawindow控件函数,与SQL语言类似,是SQL语言在Datawindow中的表示;有前
台数据处理的Datawindow控件函数如Getitem,Setitem等;还有前后台协调的函数
Retrieve等。Datawindow定义了数据的显示界面属性及与该Datawindow相关的数
据库对象的数据操作属性。界面显示风格一般分为FreeForm,Grid,Composite等,
每一类风格还可以定义内部的显示属性如数据字段显示风格、颜色、字体等,还
可以在内部添加控制如按纽、OLE、计算域等,而数据操作属性包括后台数据操作
属性如UpdateProperty,前台数据操作属性包括Retrieve 
Property、Filter 
Property,这些属性在Datawindow处理前后台数据时都要用到,因此如果修改了
这些属性,Datawindow控件处理数据的属性也就自然修改了。
下面谈谈Datawindow的数据交互过程。用户通过Datawindow控件的函数如Retrie
ve检索数据,Datawindow控件把自己的DataObject属性对象的SQL语句提交给后台
数据库,后台数据库检索数据将结果返回给Datawindow控件,Datawindow控件根
据Datawindow的格式定义显示数据设置那些字段显示、显示在那个位置、字体及
Head、Foot、Sumary等,同时计算计算域,相关事件也会触发,直到后台检索数
据完成。完成后Datawindow控件的几个缓冲区也被赋了值,修改数据时,Datawi
ndow对象的字段状态(ItemStatus)在更改,删除、过滤数据(Delete,filter)
时,数据在前台的几个缓冲区移动,并没有实际提交给后台,直到用户一旦提交
,修改就转化为SQL语句提交给后台数据库了。
Datawindow的技巧很多,我也不重复了,谈谈几个方面。常见到很多的数据窗口
对象布满了计算域,殊不知这既影响速度也不符合C/S原则,数据窗口中计算域能
作的事情大部分用视图都可以完成,而且在后台计算速度将更快,数据一致性更
高,同时也符合将业务逻辑分离的原则;数据窗口对象的大部分属性都能够用函
数表示,这样数据属性将能随数据变化而变化,可以作出很多特殊效果,但不能
太多,否则性能效率将急剧下降;很多程序员图快图省,作的数据窗口对象字段
位置不仅乱,TabOrder也没有按照“从上到下、从左到右”的原则设置,另用户
找不着北,此外字段的编辑显示格式也前后不一致,这些对于用户方便快捷的数
据处理非常不利。我们应该注意这些问题。

--
IF  回复 THEN
 请选中'将本文章寄一份给原作者', 多谢! 
END IF

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.124.200]

[关闭][返回]