POWERBUILDER开发中datawindow和直接存取的比较

bitijjz1 2002-01-23 09:18:56
POWERBUILDER开发中datawindow和直接存取的比较
用pb开发软件,免不了对数据库进行存取,datawindow是最流行的方法。FREEFORM风格基本可以代替PB中所给的其他录入控件,达到以假乱真的地步。我在实际的编码过程中发现,datawindow还是有很多缺陷的,用不好反而适得其反,事倍功半。所以有必要分析一下datawindow与直接存储的区别,在加深pb特性了解的基础上,加快开发效率,提高开发质量。

可以说datawindow和直接存取是相互矛盾的,为什么这么说呢?datawindow的长处正是直接存取的短处,反之亦然。不得不承认datawindow的优点还是很多的,比如说,填写值
的长度会在datawindow的建立过程中自动确定,accepttext函数可用来检验输入的值类型是否能被数据库接收,这两种措施,可以很好得避免手工输入过程中的人为错误。Datawindow的update函数以及bderror事件可以用来监测提交是否有错误,并及时把错误原因返回。同时datawindow有多种表现形式,图形自动生成,大大节省了开发时间。应该承认datawindow在数据控制方面已经很强了。
很遗憾,datawindow在逻辑控制反面还比较弱,笔者在开发过程中常常为此对SYBASE公司进行“诽谤”。通过实践中出现的问题,我认为datawindow的弱点在于无法对每一单元格进行编程,同时PB的bug实在不少,稳定性也差。空说无凭,举几个例子吧

例一:要求在FREEFORM风格下将某datawindow十个字段中的两个特定字段A、B设置为可编辑状态,其他为不可编辑状态。Datawindow是没有将某一具体单元格设为不可编辑状态的(也许有,我从没发现过),只能通过下面的语句Datawindow.describe(“字段名.edit.displayonly= yes”)实现。这样的确不能进行修改了,但还是能得到焦点,外观上也没变化。同时我发现Datawindow.describe(“字段名.edit.autoselect = no”)属性设置根本没作用。为了从视觉上感觉到不可编辑,还得改变一下编辑框颜色,如Datawindow.describe(“字段名.background.color = 123455755”),这样一来为了实现enable属性设置,句子就写了不少,但效果的确不怎么样。还是singleliineedit控件方便些,一句 sle_1.enabled=(true/false)就搞定了。

例二:要求在FREEFORM风格下将两个字段设为不可编辑(这两个字段各自映射一个datawindwchild),按照例一的思路只要将这两个字段都使用Datawindow.describe(“字段名.edit.displayonly= yes”)即可实现。实际并不是这样的,如果这样做pb马上发生错误(98下是这样的),从windows提示的信息来看,是内存错误,我分析原因是,pb中只有一个数据结构体用来存放临时的datawindowchild,当有两个datawindowchild需要存放时,便会发生数据溢出,进而导致严重的系统错误。
反过来,说说再直接存取的特点:可以用各种控件来对应数据库中的字段,相比之下,更有利于复杂逻辑的实现,并且容易修改,相对于数据窗口没有了那种牵一发而动全身的痛苦。但我们在编程的时候,无法忍受的另一种痛苦却会出现,为了将数据提交,必须编写恐怖的SQL语句,实际中的这种句子都很长,设计不好一个句子就得上千字节(我就有过这中痛苦的经历,MYGOOD我都不知道怎么写出来的),并且新增和修改是两个不同的语句,痛苦是双份的,对人的意志力考验也是双份的,我承认我投降了。
有了痛苦的经历,就不得不去想想办法,有什么方法可以集中datawindow和直接存取两方面的优点呢?想来想去,感觉有了一点眉目,并且是可行的。我们pb编写程序的时候不妨在界面控件和数据库中间再加上一层,这就是datastore。每个控件填写完后,自动向datastore的相关字段中填写数据,这样做等于将一个长的SQL语句化整为零了,这样一来错的概率就大大减小了(DASTOR.UPDATE()就可以完成数据的提交);同时PB中所有控件的特性我们都可以保留下来,任凭你谈出什么对话框,出发什么事件都随心所欲,引用一位朋友的话说“一切都是体力活”。
当然的,在没有复杂逻辑的情况下,datawindow还是我们的第一选择。
希望我的这一点点心得能够给刚刚走上PB开发之路的朋友们一点启发。我所说的不一定全对,但我想肯定不会全错,大家可以互相交流,取长补短,共同进步。



...全文
289 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
NetCobra 2002-02-07
  • 打赏
  • 举报
回复
bitijjz1 (刀锋战士) 所说的解决方案我感觉有点像Delphi啦,用一个DataStore连接数据库,然后用一系列连接该DataStore的DB控件设计界面,用DataStore来执行Update--真的就是Delphi啦 ^_^

就我个人的感觉(经验不足,如果说的不对,请不要骂我),我觉得PB中最方便的是内嵌SQL语句,可以很轻松的执行一些常用的查询、修改的操作,DataWindow在制作时的确是比较简单的,但在程序控制上的确不如Delphi方便。
forlovepb 2002-02-06
  • 打赏
  • 举报
回复
真是有意思,据我所知,最终用户最注重的是功能与方便.
zjcxx 2002-02-05
  • 打赏
  • 举报
回复
不过,凭心而论数据窗口的确可以摆出不错的效果来!
关键在于你是否能想到和有这份心思!:)
readwhiteswl 2002-02-05
  • 打赏
  • 举报
回复
well,OK
Leehunter 2002-02-05
  • 打赏
  • 举报
回复
to Hanson_bati_zhu(Hanson_bati_zhu):
你要是知道含义就不会用词不当了。这么简单的道理都不明白?
别象一个泼妇一样骂街,声音喊得越大心就越虚。
“说你...就...”,这种逻辑不是一个真正程序员的逻辑思维习惯,建议你改掉。
好好学习,天天向上。
alex_deng 2002-02-05
  • 打赏
  • 举报
回复
大家有话慢慢说嘛!
何必大嘈大嚷呢?
Hanson_bati_zhu 2002-02-05
  • 打赏
  • 举报
回复
to:Leehunter(理性猎人) 
你这个蠢材
“说你...就...”,这种逻辑不是一个真正程序员的逻辑思维习惯,建议你改掉。
那么什么逻辑才是一个真正程序员的逻辑思维习惯呢?
再者说了
我改不改管你屁事啊?
“好好学习,天天向上”
呵呵,我也好好学习,但我只向前看,不像你那样天天向上看,小心掉地沟里面

说你是蠢材,你就是蠢材
别不服气
小子
x_eva 2002-02-04
  • 打赏
  • 举报
回复
没人说说datastore吗?
贴主原意又不是要讨论谁好谁坏.
fzymr 2002-02-04
  • 打赏
  • 举报
回复
帮主,快来劝架!
Hanson_bati_zhu 2002-02-04
  • 打赏
  • 举报
回复
to:Leehunter(理性猎人) 
你这个蠢材,你怎么知道我不清楚五十步笑一百步的含义
你怎么就知道自己清楚五十步笑一百步的含义

说你是蠢材,你就是蠢材
别不服气
小子
viewsea 2002-01-28
  • 打赏
  • 举报
回复
不用数据窗口用什么?
最简单的就是用数据窗口了。
而且任何格式都能实现。
SeaBig 2002-01-28
  • 打赏
  • 举报
回复
好帖!多多交流,不过最好是心平气和的交流!
Leehunter 2002-01-28
  • 打赏
  • 举报
回复
to:hanson_bati_zhu:
笑话,在真正的高手手中,DEBUG下的汇编编程也是一台精密机床,你怎么不用啊?
乱用成语,五十步笑百步的含义都弄不清楚,还谈什么编程!
Hanson_bati_zhu 2002-01-28
  • 打赏
  • 举报
回复
to:Leehunter(理性猎人)
确实如你所说,VB、DELPHI等没有数据窗口,但界面效果很好
但不代表PB就不能作出这样的界面来

没有人把DW当宝
PB只是个工具
同样的工具在不同的人手里就能发挥出不同的功用
或许在你手里PB只是个蹩脚的扳手
但在真正的高手手中,PB就是一台精密机床

记住,工具是死的,人是活的
如果一个人被工具所困,那他也就没什么出息了


劝你还是努力提高自身水平去吧
别在这五十步笑一百步了

Leehunter 2002-01-28
  • 打赏
  • 举报
回复
to:: Hanson_bati_zhu
不要轻易评价别人的能力,尤其是你没有真凭实据的时候。
你可以看看PB本身的例子程序,有像样的吗?
不要这么固执,我也经历过用数据窗口来做录入的时候。也许你已经做得很好了,但是不要钻牛角尖,一条道走到黑。把自己的眼光从PB的小天地中放大出来,你会发现其它更精彩的东西。
你可以想一想:
VB、DELPHI等没有数据窗口,是不是他们的窗口都很难看,编程都很麻烦?
如果不是的话,那就是我们用数据窗口用得太滥了。
别把它当成宝贝。
EarthBear 2002-01-28
  • 打赏
  • 举报
回复
要设计好的界面需要花功夫
Hanson_bati_zhu 2002-01-28
  • 打赏
  • 举报
回复
to:Leehunter(理性猎人) 
不是PB不好
而是你太差

五十步笑一百步
Hanson_bati_zhu 2002-01-28
  • 打赏
  • 举报
回复
to:Leehunter(理性猎人) 
摆得好看的都是花了心思要换银子的
凭什么让你看

五十步笑一百步

Leehunter 2002-01-27
  • 打赏
  • 举报
回复
to hooer:我确实不会摆,但是我也没看到过一个漂亮、像样的PB界面,包括国外的。
to programbcb:四个字:难看、麻烦。别以为除了PB的数据窗口就没有其它更好的了。VC、VB、DELPHI作的界面确实要比PB好看。看看网上的一些PB大作吧,惨不忍睹。
我还是要奉劝一句用PB开发的程序员,尽量少用数据窗口来作录入界面。
programbcb 2002-01-27
  • 打赏
  • 举报
回复
to  Leehunter(理性猎人) 你在WINDOW上任何摆的方法,我都可以在数据窗口里把她摆出来。
加载更多回复(9)

400

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧