版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PB培训教程(提高篇)前言本教程的内容第一章PB的发展第二章数据窗口第三章调试及跟踪第四章编码规范第五章辅助工具本教程适合的人群对PB有基础概念有一定的开发经验乐于分享、学习、提高第一章PB的发展本章内容PB6新特性PB7新特性PB8新特性PB9新特性PB10新特性PB的发展-PB6新特性PB6新特性整体性能增强Internet增强分布式计算增强开发效率的增强扩展的多种语言支持交叉平台支持PowerScript语言增强数据窗口增强数据库连接增强OLE增强应用程序发行方面的增强其他增强参见《PowerBuilder6.0开发人员指南》PB的发展-PB7新特性PB7新特性崭新的用户界面和开发方法组件开发和部署方面的新特性数据连接方面的新特性其他新颖的特性参见《PowerBuilder7参考手册》PB的发展-PB8新特性PB8新特性用户界面Web功能数据窗口新特性EAServer的集成数据库连接PowerScript新特性进一步提高的易用性和其他增强特性参见《PowerBuilder8参考手册》PB的发展-PB9新特性PB9新特性先进的4GLPLUS基础多样的适用性利用集成开发与设计获得优异的成果不断增加的强大功能参见《创造最佳的开发环境-SybasePowerBuilder9.0》PB的发展-PB10新特性PB10新特性集成PowerDesignerXMLWebDataWindowDataWindow.NETUnicodesupport新的控件各式各样的变化数据连接的改变参见PowerBuilder10新特性第二章数据窗口本章内容常见问题函数和事件缓冲区状态位并发控制数据拷贝小技巧数据窗口-常见问题数据窗口-函数和事件DataWindowAcceptTextDeleteRowClickedRowcountDoubleClikcedGetItemDateetcGetRowInsertRowConstructorResetRetrieveSetItemSortUpdate……EditChangedErrorItemChangedSQLPreview……数据窗口-缓冲区1存放填充窗口中DataWindow控件中数据的,调用DataWindow的Retrieve()函数和InsertRow()函数可以将数据填入这个缓冲区中
存储的是从OriginalBuffer使用Filter()函数过滤到PrimaryBuffer中后剩余的记录
保存的是用DeleteRow()函数从PrimaryBuffer中删除的记录存储的是DataWindow最初执行retrieve()函数时得到的全部记录DataWindow主缓冲区PrimaryBuffer过滤缓冲区FilterBuffer删除缓冲区Deletebuffer原始缓冲区OriginalBufferFilterDeleteRowInsertRowRetrieveRetrieveDataWindow有四个缓冲区数据窗口-缓冲区2dw_1.object.xh[1]获取数据窗口的主缓冲区的第一行的xh列的值dw_1.SetItem(1,’ghdw’,’浙江联众’)为数据窗口主缓冲区的第一行的ghdw列赋值dw_1.object.xh.filter[1]获取数据窗口过滤缓冲区的第一行的xh列的值dw_1.object.data.primary.current访问主缓冲区dw_1.object.data.primary.original访问原始缓冲区dw_1.object.data.filter.current访问过滤缓冲区dw_1.object.data.delete.current访问删除缓冲区缓冲区的访问数据窗口-缓冲区3函数描述Retrieve将数据从数据库检索到主缓冲区、原始值缓冲区Update访问原始值缓冲区、主缓冲区和删除缓冲区InsertRow在主缓冲区中插入一行数据DeleteRow从主缓冲区删除一行数据,并将数据移动到删除缓冲区Filter把数据从主缓冲区移到过滤缓冲区Reset把所有缓冲区中的全部数据行清除RowsMove把数据从一个缓冲区移到另一个缓冲区RowsCopy把数据从一个缓冲区复制到另一个缓冲区RowCount返回主缓冲区中的数据行的数目ModifiedCount返回数据窗口中(包括过滤缓冲区和主缓冲区)修改的数据行数FilteredCount返回过滤缓冲区中的数据行的数目DeletedCount返回删除缓冲区中的数据行的数目Resetupdate清除数据窗口的主缓冲区、过滤缓冲区的更新标志,并清除删除缓冲区函数使用与缓冲区的变化Demo1Demo1演示DataWindow的四个缓存区DEMO数据窗口-状态位1数据窗口的四种状态位
NotModified
该行或行的值为查询所得,没有发生改变
DataModified
该行或列的值为查询所得,发生了改变
New
该行或列为一插入的新行,数据没有发生改变(数据为空或缺省值)
NewModified
该行或列为一插入的新行,数据发生改变,改变是通过用户键盘输入或调用了SetItem()函数
数据窗口-状态位2获取数据窗口的行的状态 GetItemStatus(row,column,Dwbuffer) 返回值:枚举类型dwItemStatus New! NewModified! NotModified! DataModified!
例:下面的代码返回主缓冲区第一行的ghdw列的状态 DwItemStatuesl_status l_status=dw_1.GetItemStatus(1,0,Primary!)
数据窗口-状态位3设置数据窗口的状态位 SetItemStatus(row,column,Dwbuffer,status)
例:下面的代码设置主缓冲区第一行的ghdw列的状态为NotModified!
dw_1.SetItemStatus(1,’ghdw’,Primary!,NotModified!)
注:并不是所有的状态都可以设置成功!满足下面规则Demo2Demo2演示DataWindow的四种状态位DEMO数据窗口-并发控制1并发控制
指多用户在同一时间对相同数据同时访问的能力,一般的关系数据库都具有并发控制的能力,PB中用DataWindow的设置来进行并发控制
并发控制区域数据窗口-并发控制2WhereClauseforUpdate/Delete 1>选项“KeyColumns”
比较更新前后Table的关键字是否发生了变化,即当前数据库中关键字的实际值和最初查询的值做比较,如果没有改变,则可以更新,反之不能更新
因为关键字xh=1没有发生变化,Where条件成立,更新成功!但没有达到并发控制的目的!
示例:修改序号为1的入库单的金额改为3000(原金额为2000)Updatewz_rkdSetje=3000wherexh=1;数据窗口-并发控制3WhereClauseforUpdate/Delete2>选项“KeyandUpdateableColumn”
比较更新前后Table的关键字和可修改(更新)的列值是否发生了变化,如果没有一项发生改变,更新成功;反之,若数据库中当前值中若任一项与数据窗口最初检索出的值不一致,则更新失败
示例:修改序号为1的入库单的金额改为3000(原金额为2000,假设所有列都是可更新的)Updatewz_rkdSetje=3000
wherexh=1andfsdm=‘采购入库’andghdw=‘浙江联众’andje=2000andbz=‘’;数据窗口-并发控制4WhereClauseforUpdate/Delete2>选项“KeyandUpdateableColumn”
上例中,假设在A用户修改的同时,B用户将可修改列之一je的值由2000变为了的2500,where条件不成立,因此更新失败,并弹出出错信息如下数据窗口-并发控制5WhereClauseforUpdate/Delete
3>选项“KeyandModifiedColumns”
比较更新前后Table的关键字和要修改(更新)的列值是否发生了变化,如果没有改变,更新成功,反之更新失败。对于本例,即判断关键字xh和将要修改字段je是否发生变化 上例中可修改(更新)列之一je的值经修改存盘后,已由2000变成了当前的2500,where条件不成立,因此更新失败,但是,如果改变了其他字段的值,比如ghdw,此更新能够成功示例:修改序号为1的入库单的金额改为3000(原金额为2000)Updatewz_rkdSetje=3000wherexh=1andje=2000;数据窗口-并发控制6并发控制总结KeyColumns该选项在控制数据完整性方面最弱,它所允许的并发操作是最多的,所禁止的并发操作发生的可能性非常小,只有当主键被更改后才起并发控制作用,当一条记录的关键字改变了才进行控制,这显然没有多大意义。实际上这种方法一般只在单机版的应用程序中使用,而在C/S模式中是很少使用的KeyandUpdateableColumns该选项是PB的默认选项,控制最为严格,可以实现最安全的并发控制,充分保证数据的完整性,但它也会禁止我们做一些本当允许的并发修改,是并发能力最差的方法KeyandModifiedColumns该选项可以说是前两者的折衷,在控制数据完整性和严格性方面比第一项强,比第二项弱,在允许的并发操作数量方面比第一项少,比第二项多数据窗口-并发控制7数据窗口Update其他属性KeyModificationUseDeletethenInsert数据行先被删除,然后,重新插入新的数据行注意:这个选项要求用户选择从数据库检索出所有的列UseUpdate直接修改数据行UnigueKeyColumn修改时唯一键IdentityColumns标识列,由DBMS自动产生的流水号列,如果选中该列,不能修改该列Demo3Demo3演示DataWindow的并发控制DEMO数据窗口-并发控制8数据窗口的Update函数与状态位的关系
在实际中,经常需要在一个事务中同时更新主数据窗口和明细数据窗口,例如,同时更新入库单和入库单明细两个数据窗口时,经常会写下面的语句:Ifdw_rkd.Update(True,false)=1thenIfdw_rkdmx.Update(True,false)=1then
dw_rkd.ResetUpdate()dw_rkdmx.ResetUpdate()Commit;ElseRollback;EndIfEndIf数据窗口-并发控制9Update(Boolean,Boolean)的参数第一个参数Boolean,指定Update之前是否自动执行AcceptText函数,True表示自动执行(缺省值)第二个参数Boolean,指定更新数据库之后是否自动复位更新标志,True表示自动复位更新标志若第二个参数设置成False,必须调用ResetUpdate()清除更新标志Resetupdate()函数清除数据窗口的主缓冲区、过滤缓冲区的更新标志,并清空删除缓冲区Demo4Demo4演示DataWindow的Update函数数据窗口-数据拷贝PB提供的几种数据拷贝方法的比较方法优势缺陷及限制Rowscopy单行/多行数据copy性能一般字段名称、个数、顺序要求完全相同(顺序?)GetFullstatusSetFullstatus数据和状态全部copy,性能较好无Dataobject.data单行和多行copy性能一般字段名称、个数、顺序要求完全相同ShareData不是copy,只是数据共享,性能最好,字段要求完全相同ImportString(Text)可以从文本字符串中导入性能一般字段名称、个数、顺序要求完全相同ImportString(XML)字段个数、顺序可以不相同PB9.0及以上版本才提供虽然字段个数、顺序可以不相同,但要求指定导入导出的XML模板必须相同内存消耗较大,且不释放Demo5Demo5演示DataWindow的几种数据拷贝方式和性能DEMO数据窗口-小技巧1小技巧1可以通过数据窗口的SQLPreview事件查看数据窗口发送给数据库的Sql语句,SQLPreview事件的参数的含义如下参数描述Request触发该事件的函数类型(Retrieve、Update)SQLType发送给DBMS的SQL语句的类型(SELECT、INSERT、DELETE、UPDATE)SQLSyntaxSQL语句的语法Buffer产生SQL语句的记录行所处的数据窗口缓冲区(Primary、Delete、filter)Row发生数据库行为的记录行行号数据窗口-小技巧2小技巧2查看SQL语句中的数据(可以通过DBMS的DBParm参数设置来查看数据,DBParm中有一个DisableBind变量,该变量的含义是在SQLSyntax参数所返回的语法串中所有实际数据的位置上是否一“?”号代替)DisableBind状态SQL语句DisableBind=0(默认)Selectxh,fsdm,ghdw,je,bzfromwz_rkdwherexh=?DisableBind=1Selectxh,fsdm,ghdw,je,bzfromwz_rkdwherexh=1第三章调试及跟踪本章内容异常处理DebugTraceView调试及跟踪-异常处理1异常处理(Exception)为什么要进行异常处理?异常异常是指程序在运行过程中错误事件,比如除数为0、数组越界、空对象引用等等,这些事件的发生将会阻止应用程序的运行,为了提高程序的健壮性,在程序设计时,应该考虑到可能发生的异常事件,并在应用程序中做出相应的处理设计良好的异常处理可以让应用程序有计划从错误中恢复出来,继续进行处理,摆脱因错误而导致的应用程序中断调试及跟踪-异常处理2没有异常处理的程序,程序被强行退出进行异常处理后的程序,程序可以继续运行调试及跟踪-异常处理3PB中的异常处理对象
ThrowableExceptionRuntimeErrorDivideByZeroErrorNullObjectErrorDWRuntimeErrorOLERuntimeErrorCORBASystem调试及跟踪-异常处理4PB中的异常处理语句Try//可能发生异常的语句Catch//异常类型1异常对象变量//处理异常情况的代码Catch//异常类型2异常对象变量//处理异常情况的代码//……Finally//执行公共处理部分(不管是否发生异常都会执行这段代码)EndTryDemo6Demo6演示捕获异常DEMO调试及跟踪-Debug调试工具DebugView简介是一种第三方的调试工具,能在代码中输出变量的值到一个实时刷新的界面中,我们在编写代码时,在一些关键的地方输出一个信息,特别是当程序已经编译成EXE之后,可以通过该工具查看程序的运行情况如何使用只需使用一个API函数(OutputDebugStringA)像该工具中发送信息,在程序运行时打开该工具就可以了建议自己重新封装OutputDebugStringA函数,因为该函数默认的只能传入字符串变量,自己封装之后,可以传递任何类型的变量,甚至是DataStore(编码将DataStore的数据转换成字符串),实际中使用最多的情况也是查看Datastore中的数据(在基础类库中已经进行了封装,参见nvo_debug对象)Demo7Demo7演示DebugView的使用DEMO调试及跟踪-TraceView1Trace的主要目的通过对程序的性能跟踪,分析程序各部分的消耗,以编写高效的代码调试及跟踪-TraceView2打开Trace工具的两种方式方式一:开发环境中预先设置Trace开关Trace文件存放路径调试及跟踪-TraceView3打开Trace工具的两种方式方式二:使用PB的函数打开TraceEnableActivityTraceBeginTraceEndTraceClose建议:使用第二种方式更有意义,因为可以跟踪其中的某一段代码,找出代码中比较慢的原因调试及跟踪-TraceView4跟踪结果的几种浏览方式方式一:ProfilingCloss从对象的角度查看方式二:ProfilingRoutineView从对象、方法的调用次数查看方式三:ProfilingTraceView从对象总体消耗查看Demo8Demo8演示TraceViewDEMO第四章编码规范本章内容控件命名规则代码命名规范大小写规范注释规范缩进规范建议编码规范-控件命名规范参照PB默认设置例如:CommandButton cb_DataWindow dw_RadioButton rb_SingleLineEdit sle_StaticText st_TreeView tv_UserObject uo_……编码规范-代码命名规范基本命名原则前缀_功能或作用描述与数据库保持一致对象:w_d_ds_m_uo_函数:af_gf_wf_mf_uf_变量前缀全局变量 g gi_XiTongXH局部变量 l ls_XiTong实例变量 i is_CanShuMC共享变量 s si_ChuangKouXH编码规范-大小写规范SQL语句 UpperFirstSelect、Into、Where保留字 UpperFirst IfThen…Else…EndIf预定义类型 UpperFirstString、Long内置函数 UpperFirstMessageBox其他 除前缀外首字母大写gi_XiTongXH、ls_XiTongMC编码规范-注释规范源代码文件的注释在文件的头部必须标明程序名称,它所完成的主要功能。文件的作者,及完成时间。阶段测试结束后,主要修改活动的修改人、时间、简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江西省德兴市高三生物上册期末考试检测卷(含答案)
- 2026年山东省寿光市高一化学上册期末考试检测卷附参考答案【黄金题型】
- 2026年湖南省武冈市高三历史上册期末考试模拟卷附答案【能力提升】
- 2026年辽宁省庄河市高三生物上册期末考试模拟卷带答案
- 2026年山东省荣成市高三生物上册期末考试测试卷(含答案)
- 2026年四川省康定市高三历史上册期末考试模拟卷一套附答案
- 2026年海南省五指山市高一化学上册期末考试模拟考试卷及答案【新】
- 2026年辽宁省调兵山市高三生物上册期末考试测试卷及参考答案
- 2026年吉林省磐石市高一化学上册期末考试试卷附答案(满分必刷)
- 2026-2026税务师之税法一每日一练试卷A卷含答案
- 实施指南(2026)《JBT 7364-2014倍速输送链和链轮》
- 【答案】《网球学习的根与魂》(西南交通大学)章节期末慕课答案
- 水泥生产质量追溯制度
- 医院临床科研能力提升
- 三腔二囊管的护理查房
- 《理解媒介:论人的延伸》阅读札记
- 2025年大学《缅甸语》专业题库- 缅甸语口译实践与案例分析
- 蔗渣锅炉培训课件教学
- 浙江润彩新材料科技有限公司年产23000吨消泡剂和7000吨润湿剂项目环评报告
- 子宫宫腔常见病变
- 非标设备项目管理制度
评论
0/150
提交评论