频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

PowerBuilder的数据窗口

作者: 51cto.com整理 出处:51cto.com  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2005-09-21 14:30
关 键 词:D  I
阅读提示:PowerBuilder是Powersoft公司(已被Sybase收购)推出的基于客户机/服务器体系结构的强有力的开发工具

PowerBuilder是Powersoft公司(已被Sybase收购)推出的基于客户机/服务器体系结构的强有力的开发工具,自问世以来深受开发人员的好评。Datawindow是PB中获取专利技术的控件,它对数据的处理方法相当简洁,数据窗口能处理各种显示格式、进行报表打印,对复杂的嵌套报表同样处理自如。
数据窗口的处理机制首先是根据所需的显示方式将数据源表中的域设计好,在运行时将所要的数据从数据库服务器上下载到客户机上处理,然后将更改后的数据进行提交(Commit)或回滚(Rollback)。这种处理机制大大降低了数据的传输量,减轻了网络的负担,也提高了数据的处理速度。充分利用数据窗口的特点,可达到事半功倍的效果,但是如果有些问题不加注意就会出现意想不到的错误。
几个函数

1.AcceptText()

AcceptText()函数的功能是将数据窗口当前编辑的数据转移到数据窗口的缓冲区中。程序通常在关闭窗口及其他情况下判断是否改变了当前数据。如果已改变数据,应提示用户保存。这就杜绝了用户在偶然的情况下丢失更改数据的现象。一般用ModifiedCount和DeletedCount函数判断数据是否改变。
PB在处理数据窗口时,对应开辟了四个数据缓冲区,分别为PrimaryBuffer、DeletedBuffer、FilterBuffer、SortBuffer,其中DeletedBuffer存放被删除的记录,FilterBuffer存放被过滤的记录,SortBuffer存放排序的记录,PrimaryBuffer存放其他记录。函数ModifiedCount从PrimaryandFilterBuffers中取数据进行判断,DeletedCount则从DeletedBuffer中取数据进行判断。
PB在接受用户输入时设置了一个浮动编辑框,用户输入或更改的内容并不直接进入PrimaryBuffer,而是在用户输入完后进入下一个域时,PB首先对它进行有效性检测,通过后转入PrimaryBuffer。如果只改变一项数据就关闭窗口则相关数据并没有进入PrimaryBuffer,系统判断ModifiedCount()为0,所以不会提示保存数据。用AcceptText()函数就可以将浮动编辑框中的数据转入缓冲区中,在相应的程序段前加上Accepttext(),问题就解决了。
2.FindRequired()
在实际应用中经常需要限制表中一些域的属性,例如银行客户表中账号就不能为Null。在提交数据前检查是否将必须输入的数据都赋值是一个很好的编程习惯。FindRequired函数可以解决此问题,它通过对数据窗口中数据的检查,将数据窗口中域的属性为Required,而并未赋值的域(包括相应的行、列)找出来。
为了利用此函数,在构造数据窗口时就要注意将表中具有NOTNULL属性的数据列设为Required(方法为:在数据窗口相应域上按鼠标右键或双击左键,弹出ColumnObject框,选Edit页,将Required前的框选中,按Ok钮即可)。在相应事件中插入下列程序:
longror=1//行数赋1
integercolnbr=0//列数赋0
stringcolname//用来存储列名
mle_required.Text=""
//窗口中的多行编辑控件,
用来存储找到域的行、列号
DOWHILErow<>0
colnbr++//继续找下一列
IFdw_1.FindRequired(Primary!,row,colnbr,colname,FALSE)
<0THENEXIT
//若程序出错则返回
IFrow<>0THEN
mle_required.Text=mle_required.Text+String(row)+
"~t"&+colname+"~r~n"//保存查出的行、列号
ENDIF
//当ROW返回为0则意味再没有查出,跳出
循环
LOOP
程序执行完后,多行编辑框中显示的为出错的地方,用户根据提示可以轻易地更改。FindRequired函数中的Row、Colnbr参数能自动增加或重置,Colname用来存放列的字符名。
数据的突出显示及保护

程序运行中,用户希望显示的数据具有明显的区分,例如学生的成绩(不及格的分数要用红色显示),有些数据必须只能显示,不能让用户修改;还有些数据在有些时候可以修改,有些时候不能修改等。以上情况可归结为两点:

1.数据的突出显示
数据窗口应该能使用户很快找到他们想要的信息,以颜色区分既满足用户的习惯,又不占系统资源,实现起来也很简单。以学生管理为例,要求成绩低于60分的以红色显示,其他不变。方法是:在数据窗口中对应成绩的列(例如'/CJ')上双击鼠标左键或单击鼠标右键,弹出ColumnObject对话框,选取Expressions页,在Color后的框中输入:
if(cj<60,rgb(255,0,0),rgb(192,192,192))此句表示当成绩小于60则显红色,否则灰色显示。
IF语句只可能有两种选择,如果要更多的条件判断则必须用CASE语句,例如成绩大于等于90用蓝色,小于60用红色,其他用绿色则应该用以下语句:
Case(cjWHENIS>=90THENRGB(0,0,255)WHENIS<60THENRGB(255,0,0)ELSERGB(0,255,0))。
我们还可以输入更加复杂的公式。
图形是最好的说明语言,为了更好体现数据的直观性,可以采用条件位图的方法。之所以称为条件位图,是因为它随数据的性质而决定是否显示,用可以在上述的成绩管理数据窗口的前面加上一个图片,如下图:
双击最左边的蝴蝶位图,弹出PictureObject对话框,选Expressions页,在Visible右的编辑框写入if(xb='0',1,0),此句的意义为当性别为0(女)时蝴蝶出现,否则蝴蝶消失。程序运行起来相当直观。读者可以触类旁通,充分利用列的属性使用户的界面更加友善、漂亮。
2.数据的保护
有很多情况需要对数据进行保护(即只能显示而不允许修改),学生查询成绩时就是这种情况。进行数据保护的方法有很多,第一种是双击要保护的列,弹出ColumnObject,选取Edit页,将DisplayOnly框选中;第二种将要保护的列的TabOrder置0,则此列得不到焦点,当然就无从修改;第三种是从根本作起,选取Rows菜单,再选取UpdateProperties,弹出SpecifyUpdateProperties对话框,将AllowU1pdates设为空,这样即使用户更改了也无法更新数据库,使更改毫无意义。
以上情况都是事先已经确定需要保护的数据。如果有些数据要保护,有些不要保护则以上的方法就无法实现。例如合同台账管理:对于一个没有实施的合同可以更改,对于一个已经实施的合同则必须加以保护。这需要用列的保护属性来实现,方法如下:
双击每一列,弹出ColumnObject对话框,选取Expressions页,在Protect后的框中写入:if(sfss='1',1,0),其中sfss为表示合同是否实施,如果实施(值为'1')则进行数据保护,否则可以更改,此方法可以在程序运行中动态控制数据的保护方式。
数据窗口的多表更新

在处理数据时,经常需要将几个表中的数据放入一个数据窗口中进行处理。一般情况下多表数据源的数据窗口只能用于数据的检索,而不能更新。想要更新数据则采用的方法为:创建数据窗口(将各个表的主键包括进去),修改Taborder使数据能被更改,然后对应各个表创建相应的隐含数据窗口,隐含数据窗口的数据项和主数据窗口中对应表的数据项应完全一致。存盘时将主数据窗口中的数据拷贝到相应的隐含数据窗口中去,逐个保存各隐含数据窗口中的数据即可。由此看来,第二种方法更容易理解和接受,实现起来也很简单。

小结

数据窗口的引入使PB独树一帜,奠定了其在客户机/服务器体系前端开发工具中的领导地位。在运用数据窗口这个工具时应该对它的处理机制深入了解,否则会产生意想不到的错误(PB是解释型的,很多问题尤其是关于数据窗口的问题在编程过程中检查不出来)。PB程序组中专门有一程序项DWsyntax用来说明数据窗口的用法,读者可以从中吸收到很多有用的东西。


发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看51744次)
·UML类图详解 (查看46336次)
·Java编程开发手册 (查看24866次)
·UML统一建模语言 (查看23863次)
·C#技术开发指南 (查看21930次)
·Java编程开发手册 (1195个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (304个砖)
·PB开发教程 (220个砖)
·.NET开发手册 (217个砖)
·Java编程开发手册 (653个好)
·Java基础教程 (569个好)
·.NET开发手册 (249个好)
·PB开发教程 (208个好)
·Delphi开发技术手册 (174个好)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有