学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> PowerBuilder >> 深入了解PowerBuilder的数据窗口


深入了解PowerBuilder的数据窗口



____PowerBuilder(以下简称PB)是Powersoft公司(已被Sybase收购)推出的基于客户机/ 服务器体系结构的强有力的开发工具,自问世以来深受开发人员的好评。Datawindow是P B中获取专利技术的控件,它对数据的处理方法相当简洁,数据窗口能处理各种显示格式、进行报表打印,对复杂的嵌套报表同样处理自如。

____数据窗口的处理机制首先是根据所需的显示方式将数据源表中的域设计好,在运行时将所要的数据从数据库服务器上下载到客户机上处理,然后将更改后的数据进行提交(Co mmit)或回滚(Rollback)。这种处理机制大大降低了数据的传输量,减轻了网络的负担,也提高了数据的处理速度。充分利用数据窗口的特点,可达到事半功倍的效果,但是如果有些问题不加注意就会出现意想不到的错误。

____几个函数

____1. AcceptText()

____AcceptText()函数的功能是将数据窗口当前编辑的数据转移到数据窗口的缓冲区中。程序通常在关闭窗口及其他情况下判断是否改变了当前数据。如果已改变数据,应提示用户保存。这就杜绝了用户在偶然的情况下丢失更改数据的现象。一般用ModifiedCoun t和DeletedCount函数判断数据是否改变。

____PB在处理数据窗口时,对应开辟了四个数据缓冲区,分别为Primary Buffer、Delete d Buffer、Filter Buffer、Sort Buffer,其中Deleted Buffer存放被删除的记录,Filt er Buffer存放被过滤的记录,Sort Buffer存放排序的记录,Primary Buffer存放其他记录。函数ModifiedCount从Primary and Filter Buffers中取数据进行判断,DeletedCou nt则从Deleted Buffer中取数据进行判断。

____PB在接受用户输入时设置了一个浮动编辑框,用户输入或更改的内容并不直接进入P rimary Buffer,而是在用户输入完后进入下一个域时,PB首先对它进行有效性检测,通过后转入Primary Buffer。如果只改变一项数据就关闭窗口则相关数据并没有进入Primar y Buffer,系统判断ModifiedCount()为0,所以不会提示保存数据。用AcceptText()函数就可以将浮动编辑框中的数据转入缓冲区中,在相应的程序段前加上Accepttext(),问题就解决了。

____2. FindRequired()

____在实际应用中经常需要限制表中一些域的属性,例如银行客户表中账号就不能为Nul l。在提交数据前检查是否将必须输入的数据都赋值是一个很好的编程习惯。FindRequi red函数可以解决此问题,它通过对数据窗口中数据的检查,将数据窗口中域的属性为Req uired,而并未赋值的域(包括相应的行、列)找出来。

____为了利用此函数,在构造数据窗口时就要注意将表中具有NOT NULL属性的数据列设为 Required(方法为:在数据窗口相应域上按鼠标右键或双击左键,弹出Column Object 框, 选Edit页,将Required前的框选中,按Ok钮即可)。在相应事件中插入下列程序:

____long ror=1

____//行数赋1

____integer colnbr=0

____//列数赋0

____string  colname

____//用来存储列名

____mle_required.Text = ""

____//窗口中的多行编辑控件,用来存储找到域的行、列号

____DO WHILE row <> 0

____colnbr++

____//继续找下一列

____IF dw_1.FindRequired(Primary!,row, colnbr,colname, FALSE) < 0 THEN EXIT

____//若程序出错则返回

____IF row <> 0 THEN

____mle_required.Text = mle_required.Text + String(row) + "~t" &+ colname + "~r~n" //保存查出的行、列号

____END IF

____//当ROW返回为 0 则意味再没有查出,跳出

____循环

____LOOP

____程序执行完后,多行编辑框中显示的为出错的地方,用户根据提示可以轻易地更改。 FindRequired函数中的Row、Colnbr参数能自动增加或重置,Colname用来存放列的字符名。

____数据的突出显示及保护

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

____1. 数据的突出显示

____数据窗口应该能使用户很快找到他们想要的信息,以颜色区分既满足用户的习惯,又不占系统资源,实现起来也很简单。以学生管理为例,要求成绩低于60分的以红色显示,其他不变。方法是:在数据窗口中对应成绩的列(例如‘/CJ’)上双击鼠标左键或单击鼠标右键,弹出Column Object对话框,选取Expressions页,在Color后的框中输入:

____if(cj<60,rgb(255,0,0),rgb(192,192,192))此句表示当成绩小于60则显红色,否则灰色显示。

____IF语句只可能有两种选择,如果要更多的条件判断则必须用CASE语句,例如成绩大于等于90用蓝色,小于60用红色,其他用绿色则应该用以下语句:

____Case(cj WHEN IS >=90 THEN RGB(0,0,255) WHEN IS < 60 THEN RGB(255,0,0) E LSE RGB(0,255,0))。

____我们还可以输入更加复杂的公式。

____图形是最好的说明语言,为了更好体现数据的直观性,可以采用条件位图的方法。之所以称为条件位图,是因为它随数据的性质而决定是否显示,用可以在上述的成绩管理数据窗口的前面加上一个图片,如下图:



表1

____双击最左边的蝴蝶位图,弹出Picture Object对话框,选Expressions页,在Visible右的编辑框写入if(xb=‘0’,1,0),此句的意义为当性别为0(女)时蝴蝶出现,否则蝴蝶消失。程序运行起来相当直观。读者可以触类旁通,充分利用列的属性使用户的界面更加友善、漂亮。

____2. 数据的保护

____有很多情况需要对数据进行保护(即只能显示而不允许修改),学生查询成绩时就是这种情况。进行数据保护的方法有很多,第一种是双击要保护的列,弹出Column Object,选取Edit页,将Display Only框选中;第二种将要保护的列的TabOrder置0,则此列得不到焦点,当然就无从修改;第三种是从根本作起,选取Rows菜单,再选取Update Properties,弹出Specify Update Properties对话框,将Allow Updates设为空,这样即使用户更改了也无法更新数据库,使更改毫无意义。

____以上情况都是事先已经确定需要保护的数据。如果有些数据要保护,有些不要保护则以上的方法就无法实现。例如合同台账管理:对于一个没有实施的合同可以更改,对于一个已经实施的合同则必须加以保护。这需要用列的保护属性来实现,方法如下:

____双击每一列,弹出Column Object对话框,选取Expressions页,在Protect后的框中写入:if(sfss=‘1’,1,0),其中sfss为表示合同是否实施,如果实施(值为‘1’)则进行数据保护,否则可以更改,此方法可以在程序运行中动态控制数据的保护方式。

____数据窗口的多表更新

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

____小结

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

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"深入了解PowerBuilder的数据窗口"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 深入了解PowerBuilder的数据窗口 相关内容
Google搜索中 深入了解PowerBuilder的数据窗口 相关内容
雅虎中 深入了解PowerBuilder的数据窗口 相关内容
Sogou搜索中 深入了解PowerBuilder的数据窗口 相关内容

相关软件 最新回复帖子:

·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化
·照片处理:Photoshop修复残破照片
·PS CS2新增形状模糊滤镜绘制花布图案


  相关软件 深入了解PowerBuilder的数据窗口相关文章
PowerBuilder数据窗口中按钮的封装 数据库系统在面向对象分析设计中的应用
经验点滴 如何在POWER BUILDER中使用WINSOCK控件
在PowerBuilder中实现数据库的实时过滤 用Enter键来进行窗口上的各个控键的焦点转跳
PB5中如何实现诸如Ms word之类的启动画面 如何在数据窗口(Datawindow)中用Enter代替Tab在字段间移动
PB问题解答之一 PB问题解答之二
PB问答(-) 在PB中使用FoxPro数据库的方法
PB中窗口自动居中 PB 5.0由网络版改为单机版的技巧
在PB程序中如何删除只读文件 Pb中定制打印页长实现连续打印