- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pb编程技巧
在DataWindow中调整列顺序
在 Gird 风格的 DataWindow 中,列的排列顺序是按照你选择 Column 的顺序排列的,并且不能改变.要改变列的顺序则必须重新制作。
有一个简单的方法可以实现列顺序的调整,进入DataWindow画板,打开你要修改的 DataWindow,然后按 Preview按钮进入预览模式,选择要移动的列标题并拖动到预定位置,然后返回 DataWindow 画板,这样你会发现PB已经按照你的设计重新排版了列的顺序,你只需存盘即可.
深入了解PowerBuilder的数据窗口深入了解PowerBuilder的数据窗口
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 //行数赋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
程序执行完后,多行编辑框中显示的为出错的地方,
文档评论(0)