前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

深入了解PowerBuilder的数据窗口 _天极网 网页网页产品图片报价下载天极网新闻访谈观点图文直播群乐论坛产品报价维修软件下载更多>> 全国分站北京上海广州深港武汉南京福建沈阳成都杭州长沙西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨手机电脑数码家电硬件外设企业办公游戏手机安极4GWP专区配件移动电源笔记本超极本平板一体机台式机商用工作站知本家可穿戴相机摄像机单电单反海极社女性相机GPS潮生活国产平板电视冰箱洗衣机空调高清盒子厨卫投影生活家电CPU主板显示器音频机电键鼠显卡内存硬盘服务器信息化开发办公打印网络设备商喷方案云计算游戏手机游戏下载游戏硬件动漫网页游戏 天极网新闻导购评测行情视频人像美图桌面社会万象真情时刻奇闻异事娱乐八卦 您现在的位置: 天极网>新闻> 深入了解PowerBuilder的数据窗口 天极论坛2003-06-20 17:59 分享到:我要吐槽   PowerBuilder(以下简称PB)是Powersoft公司(已被Sybase收购)推出的基于客户机/服务器体系结构的强有力的开发工具,自问世以来深受开发人员的好评。Datawindow是PB中获取专利技术的控件,它对数据的处理方法相当简洁,数据窗口能处理各种显示格式、进行报表打印,对复杂的嵌套报表同样处理自如。  数据窗口的处理机制首先是根据所需的显示方式将数据源表中的域设计好,在运行时将所要的数据从数据库服务器上下载到客户机上处理,然后将更改后的数据进行提交(Commit)或回滚(Rollback)。这种处理机制大大降低了数据的传输量,减轻了网络的负担,也提高了数据的处理速度。充分利用数据窗口的特点,可达到事半功倍的效果,但是如果有些问题不加注意就会出现意想不到的错误。  几个函数  1. AcceptText()  AcceptText()函数的功能是将数据窗口当前编辑的数据转移到数据窗口的缓冲区中。程序通常在关闭窗口及其他情况下判断是否改变了当前数据。如果已改变数据,应提示用户保存。这就杜绝了用户在偶然的情况下丢失更改数据的现象。一般用ModifiedCount和DeletedCount函数判断数据是否改变。  PB在处理数据窗口时,对应开辟了四个数据缓冲区,分别为Primary Buffer、Deleted Buffer、Filter Buffer、SortBuffer,其中Deleted Buffer存放被删除的记录,Filter Buffer存放被过滤的记录,Sort Buffer存放排序的记录,Primary Buffer存放其他记录。函数ModifiedCount从Primary and Filter Buffers中取数据进行判断,DeletedCount则从Deleted Buffer中取数据进行判断。  PB在接受用户输入时设置了一个浮动编辑框,用户输入或更改的内容并不直接进入Primary Buffer,而是在用户输入完后进入下一个域时,PB首先对它进行有效性检测,通过后转入Primary Buffer。如果只改变一项数据就关闭窗口则相关数据并没有进入Primary Buffer,系统判断ModifiedCount()为0,所以不会提示保存数据。用AcceptText()函数就可以将浮动编辑框中的数据转入缓冲区中,在相应的程序段前加上Accepttext(),问题就解决了。  2. FindRequired()  在实际应用中经常需要限制表中一些域的属性,例如银行客户表中账号就不能为Null。在提交数据前检查是否将必须输入的数据都赋值是一个很好的编程习惯。FindRequired函数可以解决此问题,它通过对数据窗口中数据的检查,将数据窗口中域的属性为Required,而并未赋值的域(包括相应的行、列)找出来。为了利用此函数,在构造数据窗口时就要注意将表中具有NOT NULL属性的数据列设为Required(方法为:在数据窗口相应域上按鼠标右键或双击左键,弹出Column Object 框,选Edit页,将Required前的框选中,按Ok钮即可)。在相应事件中插入下列程序:long ror=1 //行数赋1integer colnbr=0   //列数赋0string  colname //用来存储列名mle_required.Text = "" //窗口中的多行编辑控件,用来存储找到域的行、列号DO WHILE row <> 0colnbr++ //继续找下一列IF dw_1.FindRequired(Primary!,row, colnbr,colname, FALSE) < 0 THEN EXIT//若程序出错则返回IF row <> 0 THENmle_required.Text = mle_required.Text + String(row) + "~t" &+ colname + "~r~n" //保存查出的行、列号END IF//当ROW返回为 0 则意味再没有查出,跳出循环LOOP  程序执行完后,多行编辑框中显示的为出错的地方,用户根据提示可以轻易地更改。FindRequired函数中的Row、Colnbr参数能自动增加或重置,Colname用来存放列的字符名。  数据的突出显示及保护:程序运行中,用户希望显示的数据具有明显的区分,例如学生的成绩(不及格的分数要用红色显示),有些数据必须只能显示,不能让用户修改;还有些数据在有些时候可以修改,有些时候不能修改等。以上情况可归结为两点:  3. 数据的突出显示  数据窗口应该能使用户很快找到他们想要的信息,以颜色区分既满足用户的习惯,又不占系统资源,实现起来也很简单。以学生管理为例,要求成绩低于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) ELSE RGB(0,255,0))。  我们还可以输入更加复杂的公式。  图形是最好的说明语言,为了更好体现数据的直观性,可以采用条件位图的方法。之所以称为条件位图,是因为它随数据的性质而决定是否显示,用可以在上述的成绩管理数据窗口的前面加上一个图片.双击位图,弹出Picture Object对话框,选Expressions页,在Visible右的编辑框写入if(xb=‘0’,1,0),此句的意义为当性别为0(女)时蝴蝶出现,否则蝴蝶消失。程序运行起来相当直观。读者可以触类旁通,充分利用列的属性使用户的界面更加友善、漂亮。  4. 数据的保护  有很多情况需要对数据进行保护(即只能显示而不允许修改),学生查询成绩时就是这种情况。进行数据保护的方法有很多,第一种是双击要保护的列,弹出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’)则进行数据保护,否则可以更改,此方法可以在程序运行中动态控制数据的保护方式。  5.数据窗口的多表更新  在处理数据时,经常需要将几个表中的数据放入一个数据窗口中进行处理。一般情况下多表数据源的数据窗口只能用于数据的检索,而不能更新。想要更新数据则采用的方法为:创建数据窗口(将各个表的主键包括进去),修改Taborder使数据能被更改,然后对应各个表创建相应的隐含数据窗口,隐含数据窗口的数据项和主数据窗口中对应表的数据项应完全一致。存盘时将主数据窗口中的数据拷贝到相应的隐含数据窗口中去,逐个保存各隐含数据窗口中的数据即可。由此看来,第二种方法更容易理解和接受,实现起来也很简单。 (作者:责任编辑:方舟) 欢迎在新浪微博上关注我们 评论 最新文章更多>> 商务高端 长沙e人e本t7 32g增强版分销3350 就是那么不可替代 用户推荐品牌容声冰箱 【京东】14寸高清屏 东芝U800W-T02S报6999 【京东】一体机首选 惠普18-1200cx仅2199 阅读神器 湖南总代理亚马逊Kindle2国行999 炉石传说蓝帖:冒险模式正按计划开发中 职场头班车领券 索尼EX221投影机火热促销 《神雕侠侣》手机版新手礼包 英特尔新BayTrail亮相 稳定性提升性能增强 下单即送榨汁机一台!夏普LCD-70LX850A特惠 频道精华 武汉PS4/3DS LL港版现货免费破解300乐享支持4G网格 武汉N9005报价3690元还分期高性价平民化 至睿睿擎600w电源评测以旧换新很划算 武汉iphone5s报价3890分期恋上微单 长沙佳能EOS M2套机特惠4199元售旗舰盛会 MWC2014巴塞罗那移动峰会全程直播留下的都是金子 长沙iPhone4s原装正品2488拒绝山寨 品牌蓝牙音箱所具备的六个条件 笔记本手机数码家电 【京东】14寸高清屏 东芝U800W-T02S报6999 2014财富全球最受赞赏公司:联想行业榜第三 3月1日后 Windows8企业版作为独立产品销售 【特惠】降1K!神舟GTX765M游戏本战神K350C 现在只讲细节 东芝新一代KIRA做工如何? 【京东】经典机型白色机身 东芝L50售4799元 【官网】极速体验 Alienware M17x报19999元 【移动万有瘾力No.4】麻溜刷牙之智能牙刷 经典三防之王 路虎A3 现特价售4300元 经典奢华享受 苹果iPhone 5S 16g售4300元 经典的全键盘之风 黑莓P'9981特价9500元 重新定义隐私安全 Blackphone亮相MWC2014 实用性日趋增强 市售热门中端商务手机推荐 解读Nokia X系列退出发达国家市场背后原因 全面提升 三星发布两款全新智能相机 炬力集成&媒体巡访会之个性艾诺电子 四核绝对性价 普耐尔MOMO9小鸟S售349 7寸四核平板 普耐尔MOMO9小鸟S新品上市 驰为VX1通话平板怪兽级拍摄功能详解 笔记本与平板二合一 PiPO W1开箱 抢887元大礼包,网友曝出原道W11实拍图 就是那么不可替代 用户推荐品牌容声冰箱 职场头班车领券 索尼EX221投影机火热促销 下单即送榨汁机一台!夏普LCD-70LX850A特惠 奢华智能液晶电视 夏普LCD-52LX750A热销 抢购无止境 夏普LCD-52LX640A仅售7699元 三口之家首选 新婚燕尔首选海信冰箱 下单立赠壁挂架一套!夏普LCD-46LX450A特价 焦点热词 Ultrabook苹果ipad2小米M1vivo S7 诺基亚N8美的冰箱诺基亚N9诺基亚手机酷派7728iphone 4sWindows8超极本 关于我们|About us|天极服务|天极大视野|天极动态|加入我们|网站地图|网站律师|友情合作|RSS订阅|意见反馈Copyright (C) 1999-2014 Yesky.com, All Rights Reserved 版权所有 天极网络