发信人: 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]
|
|