




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于把企星ERP升迁到高版本PB的若干问题(下)把使用PB6.51开发的QXERP软件升迁到高版本PB花了数万元购买了PowerBuilder 9 和PowerBuilder 10。如果不把自己开发的软件升迁到高版本PB,看看在高版本PB中有什么表现,那就太亏了。现在是2008年,PowerBuilder已经正式发布了PowerBuilder 11,而PowerBuilder 11已经升级到11.2了。因此更有必要把自己开发的软件升迁到PB 6.51以上的各个版本,看看到底变成什么样子了。搭建升迁环境硬件CPU:老试赛扬400Mhz,内存:256M,硬盘:西捷ST38422A8.5GB操作系统Windows XP sp2,安装了最新的更新杀毒软件瑞星杀毒和瑞星防火墙,升级到最新数据库服务器MS SQL Server 2000,未进行sp更新PowerBuilder软件在同一个操作系统中安装不同版本的PowerBuilder,但是安装在不同的文件夹内。PowerBuilder 6先安装PB 6.5,升级到651PowerBuilder 7先安装PB 7.01,升级到703。根据我的经验,PB 7.0的Bug太多无法使用,简直不是个东西。PB 7.01才能凑合使用,直到PB 7.03才算稳定。PowerBuilder 8PB 8.02PowerBuilder 9先安装PB 9,升级到901PowerBuilder 10PB 10.0PowerBuilder 10.5PB 10.5PowerBuilder 11先安装PB 11.0,升级到11.1(目前的最高版本)以上的PowerBuilder各个版本都是正版软件。安装的PB 11.0是评估版,别的都是企业版。QXERP是一套曾经通过国家科委测评的版本改造的演示版共有130个PBL文件。该软件使用了改造后的PFC 6。使用MS SQL Server 2000。升迁准备按照赛贝斯的介绍,在PB651中对QXERP软件进行了一些取舍。关于PFC Obsolete objects。据介绍,这个PBL是调试在PB 5及以下版本中开发的程序用的,在QXERP中不使用。因此升迁到高版本PB时把这个PBL去掉。关于Transport对象。这个对象是做三层及三次以上应用的服务器端使用的对象。QXERP是标准的C/S体系结构,不使用这个对象。据介绍从PowerBuilder 8起,多层结构软件的服务端改用Sybase的EAServer服务器而取消了这个对象。因为我们不使用,所以升迁到PB 9及以上时,事先在PB 651中删除了PFCmain.pbl和PFEmain.pbl里面的pfc_n_trp和n_trp。为什么在升迁到PB 8时不去掉PFC中和Transport对象相关的东西呢,只是想看看PowerBuilder是否秉承它“虽然取消而在下一个版本中才不允许”的一贯做法。将QXERP软件升迁到PB7我们往往叫做“将QXERP软件升迁到PB”,而在PB的工作过程中叫做“Migrate”,这个英文单词有“升迁”的含意,我在以后的叙述中统统叫做“升迁”。启动PB7的开发环境因为PB7.0不稳定,所以直接使用PB7.03。在正式升迁到PB703之前,要在PB的DB Profile中新建Profile名字并且连接好数据库,否则在以后的过程中会出错。可以从QXERP的PB651的版本直接升迁到PB7.03。启动PB703后,选用主菜单的“Select Application”或工具栏的“Select Application”图标。然后,PB弹出如下对话框。在对话框中找到那个QX001.pbl中的qxerp应用,点击“OK”按钮,又出现下图的对话框。这个对话框是让你升迁你的应用,不要着急点击“OK”按钮,要先利用“Browse”按钮把整套软件的全部PBL加到升迁用的Library List(库列表)之内。如下图。加好库列表后点击“OK”按钮,PB开始对整套软件进行升迁,如下图。升迁进度在这个对话框的状态栏中显示。这时候要做的事情就是等待。等待若干时间后,PB弹出一个信息对话框报告升迁中的问题,如下图。可以先把这个报告Copy to 成一个文本文件,以便事后查看。当这个报告中没有“Error”时,点击“OK”按钮就会完成升迁过程。将QXERP软件升迁到PB8升迁到PB8的操作过程启动PB8的开发环境,这里使用的是PB8.02。在正式升迁到PB802之前,要在PB的DB Profile中新建Profile名字并且连接好数据库,否则在以后的过程中会出错。下面叙述从QXERP的PB651的版本直接升迁到PB8.02的操作方法。从PB8起,PowerBuilder的开发环境增加了一个“工作空间”的内容。一套PB应用软件要使用一个工作空间(.pbw文件),而Library List库列表被放入一个叫做“目标文件”的文件内,目标文件(Target文件)的扩展名是.pbt。启动PB802后,第一项任务是新建“工作空间”。使用主菜单或工具栏的“New”来新建工作空间。点击“New”图标后出现如下对话框。在这个对话框中选择Workspace,然后点击“OK”按钮,按照提示指定一个.pbw文件的位置和文件名。确定后新建工作空间的工作就完成了。下一步是新建目标文件。还是点击“New”图标。不过这次要使用Target标签页。在这个标签页中选择Existing Application已存在的应用。然后点击“OK”按钮。弹出一个对话框,在这个对话框中选择已有的应用。然后按“Next”按钮。它叫你确认选择的应用所在的.pbl的路径。然后“Next”。叫你保存成.pbt,默认名字和应用的名称相同,这里我们改成和.pbw的名称一致,如上图那样。然后点击“Finish”按钮。因为原来是PB651的软,所以弹出升迁对话框。这个对话框是让你升迁你的应用,不要着急点击“OK”按钮,要先利用“Browse”按钮把整套软件的全部PBL加到升迁用的Library List(库列表)之内。如下图。加好库列表后点击“OK”按钮,PB开始对整套软件进行升迁,如下图。PB8的升迁进度不在这个对话框的状态栏中显示。而是在开发环境的下部专门开辟的一个信息区来显示。这时候要做的事情就是等待。等待若干时间后,PB不通知你是否已经做完,只是把那个升迁对话框关闭。升迁过程中发生的全部情况都显示在信息区内,如下图。其中蓝色的文字是升迁过程中发现的问题,如果里面有Error问题,就是升迁没有成功。一定要将信息区的内容保存成文件,然后再分析和解决里面的Erroe问题。用鼠标右键点击信息区的任何位置,出现右键菜单,选择这个菜单中的“Save”来保存信息区的内容。保存的文件格式是.txt。分析和解决问题,最后完成升迁过程打开已经保存的信息文件,当然可以在PB中打开,或使用记事本打开。这个文件异常冗长,除了有出错、警告等内容之外还有这个升迁过程的记录。为了便于查看,可以先把升迁过程记录删除掉,只保留出错信息。我们会发现这套软件升迁到PB802时出现了几十处Error,要想修正从何下手呢。首先分析一下都有哪些种类的Error。C0037: Unclosed quoted string引号未封口,往往由于“憋了半个汉字”引起。C0015: Undefined variable: xxxxxx未定义变量,指出了变量名或对象名。C0015: Undefined variable:未定义变量,但未能指明是哪个变量。C0031: Syntax error语法错。C0019: Incompatible property enabled for type com_u_tb_graphtabpage_categoryaxis启用了不相容的属性 在类型内。C0101: Referenced object com_u_graph_categoryaxis is out of date, must be converted引用的对象是已经过时(不能用的)的,必须进行转换。虽然有几十项错误,但归纳起来只是上述的5类6种错误。这样一来会给你增加解决问题的信心。解决问题的途径。按照C0037,C0015,C0031,C0019,C0101的顺序比较容易解决。其中C0019,C0101是由于其它对象有问题而带来的错误,可以先不理睬。将其它问题搞定就会自行解决。和PB651一样,凡是出错的对象都不能用Script画板打开。但是从PB8起,在开发环境中可以直接编辑语法文件。用鼠标右键点击对象名称,在右键菜单里选用Source Edit就会进入语法文件编辑器。对于C0037,找到出错的对象用语法编辑器打开。因为是所谓“憋了半个汉字”,所以出错的位置不能使用查找功能,只能目视去找。会像脚本编辑器那样,未封口的引号语句是红颜色的。找到后改过来,然后保存,如果保存成功就是已经解决问题了。如果保存失败,会在信息区提示什么位置还有问题。对于指明变量名和对象名的C0015。可以先不理睬。可能是别的对象有问题而造成的。对于未指明变量名和对象名的C0015。根据我的经验,只要在语法编辑器在第一行第一个位置加一个空格然后再去掉,就好了,就可以保存了。对于C0031语法错。如果报告这一条错误的对象还报告了另外的错误,根据我的经验,解决了另外的错误,这个语法错会自动解决的。如果某个对象只报告C0031语法错,大多数情况还是里面“憋了半个汉字”,可能还是多处“憋了半个汉字”。按照解决C0037的方法解决。对于剩下的问题,根据我的经验不用手工解决,再做一次升迁就会自行解决了。再次升迁是在开发环境左边用鼠标右键点击Target文件名,在右键菜单中选“Migrate”。另外的问题是PFC中和Transport对象相关的东西并没有报错。更简易的解决问题的方法我会在升迁到PB9的文章中加以说明。将QXERP软件升迁到PB9升迁到PB9的操作过程启动PB9的开发环境,这里使用的是PB9.01。在正式升迁到PB9之前,要在PB的DB Profile中新建Profile名字并且连接好数据库,否则在以后的过程中会出错。下面叙述从QXERP的PB651的版本直接升迁到PB9的操作方法。从PB8起,PowerBuilder的开发环境增加了一个“工作空间”的内容。一套PB应用软件要使用一个工作空间(.pbw文件),而Library List库列表被放入一个叫做“目标文件”的文件内,目标文件(Target文件)的扩展名是.pbt。启动PB9后,第一项任务是新建“工作空间”。使用主菜单或工具栏的“New”来新建工作空间。点击“New”图标后出现如下对话框。在这个对话框中选择Workspace,然后点击“OK”按钮,按照提示指定一个.pbw文件的位置和文件名。确定后新建工作空间的工作就完成了。下一步是新建目标文件。还是点击“New”图标。不过这次要使用Target标签页。在这个标签页中选择Existing Application已存在的应用。然后点击“OK”按钮。弹出一个对话框,在这个对话框中选择已有的应用。然后按“Next”按钮。它叫你确认选择的应用所在的.pbl的路径。然后“Next”。叫你保存成.pbt,默认名字和应用的名称相同,这里我们改成和.pbw的名称一致,如上图那样。然后点击“Finish”按钮。因为原来是PB651的软,所以弹出升迁对话框。这个对话框是让你升迁你的应用,不要着急点击“OK”按钮,要先利用“Browse”按钮把整套软件的全部PBL加到升迁用的Library List(库列表)之内。如下图。加好库列表后点击“OK”按钮,PB开始对整套软件进行升迁,如下图。PB9的升迁进度不在这个对话框的状态栏中显示。而是在开发环境的下部专门开辟的一个信息区来显示。这时候要做的事情就是等待。等待若干时间后,PB不通知你是否已经做完,只是把那个升迁对话框关闭。升迁过程中发生的全部情况都显示在信息区内,如下图。其中蓝色的文字是升迁过程中发现的问题,如果里面有Error问题,就是升迁没有成功。一定要将信息区的内容保存成文件,然后再分析和解决里面的Erroe问题。用鼠标右键点击信息区的任何位置,出现右键菜单,选择这个菜单中的“Save”来保存信息区的内容。保存的文件格式是.txt。分析和解决问题,最后完成升迁过程打开已经保存的信息文件,当然可以在PB中打开,或使用记事本打开。这个文件异常冗长,除了有出错、警告等内容之外还有这个升迁过程的记录。为了便于查看,可以先把升迁过程记录删除掉,只保留出错信息。我们会发现这套软件升迁到PB9时出现了几十处Error,要想修正从何下手呢。首先分析一下都有哪些种类的Error。C0037: Unclosed quoted string引号未封口,往往由于“憋了半个汉字”引起。C0015: Undefined variable: xxxxxx未定义变量,指出了变量名或对象名。C0015: Undefined variable:未定义变量,但未能指明是哪个变量。C0031: Syntax error语法错。C0019: Incompatible property enabled for type com_u_tb_graphtabpage_categoryaxis启用了不相容的属性 在类型内。C0101: Referenced object com_u_graph_categoryaxis is out of date, must be converted引用的对象是已经过时(不能用的)的,必须进行转换。以上的5类6种错误,在升迁到PB8时已经存在。由于PB9的语法更严格,还会出现其它错误:C0081: Duplicate variable: ls_where变量重复定义。原版PFC的pfcdwsrv中pfc_n_cst_dssrv_report和pfc_n_cst_dwsrv_report里面的of_prepprint函数竟然在同一个语句行内存在重复定义ls_Objects变量问题,真是莫名其妙。C0097: Invalid statement非法语句。多见于编程人员自己写的脚本,在IF THEN之后没有给变量赋值,例如:plan.pbl(sub_w_mrpplan_normal).dw_1.doubleclicked.91 具体语句为:if isvalid(lds_workcenter) then lds_workcentertechnics.pbl(sub_w_technics_plan_edit_waste).sub_w_technics_plan_edit_waste.open.26 具体语句为:if isnull(ldc_safe) then ldc_safewarehouse_voucher.pbl(sub_w_stock_general).sub_w_stock_general.uf_contrast.280 具体语句为:if isnull(ldc_account_init) then ldc_account_init其它由C0081,C0097带来的一些错误,一般都和C0081,C0097错误在同一个对象之内。有几十项错误,虽然可以但归纳起来一个一个地解决。但是,由于问题多还是很烦人的。于是我想了另外一种办法来“一次性”解决。这就是所谓“更简易的解决问题的方法”。这个简易方法的原理是,在PB651中先把全套程序PBL内的全部对象都导出成PB的语法文件,然后再重新导入到PBL里。在导出过程中,把具有高位ASCII码(也叫做“反ASCII码”)的字符后面不紧跟另外一个具有高位ASCII码的(即所谓憋半个汉字的字符)用正常字符替换。这样可以解决那些引号未封口的问题。重新导入会解决那些未定义变量即语法错的问题。如果事先在PB651中改正那些已知的变量重复定义和非法语句的问题,再做升迁将会变得轻而易举。升迁时不会报告任何Error而一次成功。话说回来,把一整套PBL中的几千个对象统统导出成PB语法文件,然后再把几千个语法文件再重新导入到PBL内,如同天方夜谭一般,几乎无法做到。不过,我做了一套工具程序,一个是批量导出语法文件(batch_export.exe)另一个是批量导入语法文件(batch_import_syntax.exe),这两个程序是要配套使用的,而且都是给PB651用的。在批量导出语法文件的程序中导出的同时会修理“憋半个汉字”的问题。不过运行这两个程序时,PB651的全部运行库都要在可搜索路径上。和batch_import_syntax.exe配套的PBOrcapi.dll及PBOrcapiu.dll要在batch_import_syntax.exe同一个文件夹内。运行这一套程序可以轻易的导出和导入几千个对象,只是由于对象太多需要较长时间。事先在PB651中改正那些已知的变量重复定义和非法语句的问题,再使用我的批量导出导入工具处理一下全部PBL,升迁后的信息文件中不会报告任何Error,可以一次成功。这种方法在升迁到PB8、PB9、PB10、PB10.5和PB11时都有效。将QXERP软件升迁到PB10及PB10以上版本PB10、PB10.5、PB11版本据赛贝斯宣传,从PB10起“全面”支持Unicode。还有许多新功能,例如支持微软的“.NET”、在PB中又集成了东西、改进了WEB功能和对Web Services支持、提高了对Java支持等等等等。不过对于我们把PB只作为C/S结构的开发工具而又不使用Sybase数据库的开发者来说没有任何可以感兴趣的事情。只是它的“功能”越“强大”,越累赘。把我们使用PFC基类、用PB651开发的软件升迁到PB10及以上时,“全面支持Unicode”反而变成了一种障碍。由于从PB8起开始支持Unicode,在脚本的有效语句(除注释外的语句)中如果有所谓“憋了半个汉字”问题时,升迁过程中会报告引号未封口的错误。而从PB10起,整个脚本,包括注释在内都不允许存在“憋了半个汉字”的问题。如果有这种问题升迁时将会从半个汉字的位置停止导入脚本,使脚本不完整,报告:C0114: Error scanning object source entry: 对象名称.而对于这种错误又不能报告出错的对象在那个PBL之内。致使我们无从下手。PowerBuilder基类的开发人员在写基类脚本中的注释时,要写版权符号“”。这是无可非议的,但是在中文版的Windows中不能正确显示这个版权符号而显示成一个问号“?”,你可以在PB脚本编辑器中搜索一下这个问号,实际上是搜索不到的。当使用中文版Windows升迁到PB10及以上时统统会认为是半个汉字,这样一来就无法完成升迁过程了。我使用了一个“SearchAndReplace”工具检查了一下,在PFC中这个版权符号竟然有近3000个。除了这个版权符号之外还有别的“憋了半个汉字”的东西,大约一百多处。怎么办呢。当然可以使用“SearchAndReplace”,我也曾经使用过。用它来将PBL中的版权符号“”用正常ASCII码替换掉,但是这个工具需要你了解想替换的东西的16十六进制值。版权符号“”的值很容易知道,但是别的“憋了半个汉字”东西的十六进制值就无从考察了。另外,这个工具是在原有的基础上替换,必须把被替换的内容替换成等长的内容,稍有不慎就会出错,造成替换后的PBL不能使用。还是自力更生吧,于是我自己做了一套套批量导出再导入的工具程序(batch_export.exe /batch_import_syntax.exe),这套工具能让问题立即迎刃而解。使升迁到PB10及以上变得易如反掌。PB10.5(并非PB10的升级版本,而是一个单独销售的产品)和PB11的开发环境除了工具栏图标立体化之外,在使用中未发现有重大改进,下面以PB10.0为例介绍一下升迁操作。以PB10.0为例的升迁操作过程启动PB10的开发环境,这里使用的是PB10.0。在正式升迁到PB10之前,要在PB的DB Profile中新建Profile名字并且连接好数据库,否则在以后的过程中会出错。在升迁之前先对已知的变量重复定义、非法语句进行修正并去掉Transport相关对象,再用我的批量导出再导入的工具程序对PB651的整套PBL进行处理。下面叙述从QXERP的PB651的版本直接升迁到PB10的操作方法。从PB8起,PowerBuilder的开发环境增加了一个“工作空间”的内容。一套PB应用软件要使用一个工作空间(.pbw文件),而Library List库列表被放入一个叫做“目标文件”的文件内,目标文件(Target文件)的扩展名是.pbt。启动PB10后,第一项任务是新建“工作空间”。使用主菜单或工具栏的“New”来新建工作空间。点击“New”图标后出现如下对话框。在这个对话框中选择Workspace,然后点击“OK”按钮,按照提示指定一个.pbw文件的位置和文件名。确定后新建工作空间的工作就完成了。下一步是新建目标文件。还是点击
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 委托加工英语合同范本
- 砖机购买合同范本
- 关于梦想的演讲稿(新版16篇)
- 商场承包协议合同范本
- 知识产品顾问合同范本
- 教研室工作计划怎么写2025(5篇)
- 骨干教师个人工作计划2025(5篇)
- 发展银发经济增进老年人福祉
- 跑步俱乐部周末户外计划
- 医药电商市场前景展望
- 配电室改造施工方案
- 《生物经济学》课程教学大纲
- 选矿厂安全培训教材
- 财经法规与会计职业道德(经管类专业)全套教学课件
- 2024年人教版八年级上册物理全册教学课件(新版教材)
- 2021年秋新教科版六年级上册科学全册表格式教案
- 碳谱定量分析方法
- 机械购销合同电子版
- 蓄热式焚烧装置(RTO)
- 2024-2034年中国女式情趣内衣市场发展现状及战略咨询报告
- FZT 51005-2011 纤维级聚对苯二甲酸丁二醇酯(PBT)切片
评论
0/150
提交评论