发信人: leitiger(雷老虎)
整理人: leitiger(2002-06-05 23:38:28), 站内信件
|
PowerDynamo计算机需要的桩
--------------------------------------
如果Jaguar和PowerDynamo运行在不同的计算机上,而且一个Web页包含一个绑定到EA服务器组件的属性的服务器-可编程控件,该组件的桩必须手工拷贝到PowerDynamo运行的计算机上。如果桩在PowerDynamo 计算机上是不可用的,当你运行该页时会发生“未定义的变量”错误,并且控件的值被设置为NULL。
当PowerBuilder build该页时,桩被生成在Jaguar服务器上。桩位于你的Jaguar安装html\classes文件夹中一个与包有相同名称的文件夹中。例如,如果组件在一个叫CustDataPkg的包中,拷贝html\classes\CustDataPkg文件夹到PowerDynamo运行的计算机。桩必须拷贝到一个包含在计算机PATH中的文件夹中。
在Windows 98上,CLASSPATH变量在autoexec.bat中定义。如果你将桩拷贝桩到一个不在该变量指定的路径中的文件夹,你必须编辑autoexec.bat以包含桩路径到CLASSPATH变量中。编辑完autoexec.bat后,重启你的计算机让你的修改生效。
PowerDynamo计算机必须被正确配置以使用Java。PowerDynamo缺省被配置为使用JDK 1.1.8。要使用JDK 1.2.2,你必须确认Java客户运行文件已经从Jaguar安装程序中安装,而且你必须在Sybase Central中修改一些设置:
1. 打开Sybase Central并展开PowerDynamo 3.5下的Utilities和Configuration文件夹。
2. 双击左侧面板中的Default Java Settings和右侧面板中的Java VM,并从下拉列表中选择Sun Java VM 1.2。
3. 在右侧面板中选择Classpath并设置其值为<你的_路径>\Sybase\PowerDynamo\class03。
你必须同时修改PATH环境变量以包含
<你的_路径>\Sybase\Shared\jdk122\jre\bin\classic文件夹. [CR 239860]
在MTS上使用Web数据窗口DTC
-------------------------------------
COM/MTS中数据窗口生成器组件(PBDWR80.DLL)使用的方法名称都是小写。如果你试图通过PowerDynamo发布一个使用Web数据窗口 DTC的页到MTS,你将收到一个 错误因为发布到PowerDynamo的该页的JavaScript文件使用混合大小写的方法名称。Sybase推荐如果你想使用MTS作为Web数据窗口的组件服务器时使用ASP。 [CR 196215]
当使用缺省的安装在EA服务器中的Web数据窗口生成器组件时使用ASP有已知的问题。
============================
章节 IV: 升级问题
============================
升级 from PowerBuilder 7
=============================
下列升级问题应用于当你从PowerBuilder 7或更早版本升级应用程序时。
源代码控制改变
---------------------------
PowerBuilder 8提供一个直接连接到外部SCC-兼容的源控制系统。PowerBuilder不再需要你注册PowerBuilder对象到一个分立工作PBL中,然后才能check in或check out。甚至如果你使用PowerBuilder native (PBNative) check in/check out实用工具时,你必须通过一个你在Workspace属性板上定义的SCC接口访问对象。 在将一个源控制下的工程升级到PowerBuilder 8前,阅读在PowerBuilder用户指南中的关于使用源控制的章节。
保留字
--------------
新保留字被添加到PowerScript语言,以支持异常处理。如果你在已有的应用中使用任何新保留字(TRY, CATCH, FINALLY, THROW, 和 THROWS) 作为标识符, 你必须改变这些标识符, 给它们不冲突的名称. 你能运行在New对话框中的Tool页上的升级助手来定位新保留字的不正确的使用。
过时对象
---------------
Transport对象及其相关属性和方法在本版中过时。该对象用于分布式PowerBuilder应用。因此过时的用语分布式PowerBuilder的附加属性和方法包含:
o 应用程序对象的ConnectionBegin和ConnectionEnd事件
o Connection对象的GetServerInfo, RemoteStopConnection, 和RemoteStopListening函数
o proxy对象的SetConnect函数
o Connection对象ConnectString和Trace属性
o ConnectionInfo结构
SystemError事件改变
------------------------
在PowerBuilder 7中, 如果一个错误发生并未被一个错误或意外事件捕获, 应用程序的SystemError事件被立即触发。如果没有代码被关联到SystemError 事件, 应用程序被终止。否则,在SystemError 事件执行后,控制返回到错误代码发生的位置。
在PowerBuilder 8中, 如果一个错误发生并未被意外处理机制或外部意外事件捕获, 脚本终止且调用栈被松开( unwound). 如果错误作为脚本中的triggerevent()的结果发生, 调用脚本终止且调用栈被松开。在大多数情况下,SystemError 事件不被出发,直到调用栈变成空。如果一个 response窗口的事件引发错误,SystemError事件在response窗口事件完成后立即被触发。
因为该行为的改变,跟在产生错误的语句后的在SystemError事件触发后不被执行,而以前的版本可能会。该改变有对依赖于将控制返回到错误发生处的脚本方式的应用程序有重要的影响. 在PowerBuilder 8中依赖该行为的代码必须被修改。
推荐的你处理潜在错误通过将可能引发错误的代码放在TRY/CATCH块中来防止当一个执行错误发生时SystemError事件被触发。编写SystemError事件代码来处理任何未捕获错误仍然是可取的。一旦SystemError事件被触发,你不应让应用程序再继续。SystemError事件应该释放资源并终止应用程序.
IsValid函数改变
-----------------------
如果传递一个无法转换成PowerObject的Any类型的参数,IsValid函数现在返回FALSE。以前的版本中,传递一个非法对象到IsValid引发一个 系统错误。你应该同时注意上面关于SystemError事件改变的描述。
颜色选项格式改变
--------------------------------
你可以通过选择Design>Options>Object Colors为在数据库或SQL Select画板中显示的每个表指定自定义颜色。这些你指定的颜色被保存到你的PB.INI文件的[Database]段。这些颜色的存储格式在PowerBuilder 8中改变以支持控件可用的Windows系统颜色和自定义颜色数量的增长。例如,这是在一个PowerBuilder 7 PB.INI文件中描述键的颜色定义的行:
ForeignKeyLineColor=0 0 255
IndexKeyLineColor=255 0 0
PrimaryKeyLineColor=0 128 0
这是在PowerBuilder 8 PB.INI文件中对应的行:
ForeignKeyLineColor=16711680
IndexKeyLineColor=255
PrimaryKeyLineColor=32768
如果你计划在PowerBuilder 8使用你的PowerBuilder 7 PB.INI文件,或者它的[Database]段,你应该首先删除[Database]段中的所有颜色设置。如果你不删除,使用的颜色可能使表在PowerBuilder 8中不能辨认。你可以在PowerBuilder 8的Object Colors 属性板中重设自定义颜色。
Web数据窗口升级问题
-------------------------------
在PowerBuilder 7.0.2 C3之前的版本你可以使用解决办法来解决Netscape翻译(rendering)的问题。这些方法在本版本中可能会工作不正常因为Netscape翻译的改进。
特别地,如果你使用计算列或文本列仅包含空格,Web数据窗口生成器现在为这些列生成一个表格项,使表格显示两倍宽。如果你看到这种效果,删除这些占位(placeholder)列并使用更标准的布局。 [CR 218640].
升级PowerSite工程
----------------------------
你可以升级PowerSite 7.1中生成的工程,并在PowerBuilder Web目标中使用。要使用一个已有组件管理数据库中的数据,你必须在安装该版本前备份组件管理数据库的一个拷贝 (pscmpmgr.db) 。保存该数据库为一个有不同名称的文件。要升级组件管理数据库,你的系统必须同时启动Adaptive Server Anywhere 6.0.x和7.0.1。
你可以使用PowerSite 7.1 Migration Project Target向导来升级本地和远程PowerSite工程。
要升级已有的PowerSite工程:
1. 备份你的所有文件。
2. 升级包含你在Web页中使用的数据窗口定义的PBL到PowerBuilder 8。
3. 在你完成前两步后使用升级向导
在升级时如果一个被升级的页使用了数据窗口 DTC,该页将被将修改为使用新Web数据窗口生成器(HTMLGenerator80)。
升级 from PowerBuilder 6.5 和 earlier 版本
====================================================
下列升级问题适用于如果你从PowerBuilder 6.5或更早版本升级一个应用程序的时候。
数据窗口对象中的嵌套报表被改名
--------------------------------------------
在PowerBuilder 7和8中,一个数据窗口对象中的所有对象必须有一个名称。 升级时,没有名称的对象被赋予基于用户定义前缀设置的名称,通常是dw_1,dw_2,等等。因为名称被串行赋予,有时一个对象被赋予一个已经被数据窗口对象中其他对象使用的名称。 这会导致意外的动作。例如,命名一个无名报表为一个已经被另一个数据窗口对象使用的名称如dw_2,会导致Getchild()/ShareData()或GetChild()/Retrieve() 操作找到并使用错误的数据窗口对象。
要解决该问题,升级前在数据窗口画板中选择Design>Options并修改Prefixes页上的数据窗口对象前缀。一旦数据窗口对象被升级完,前缀可以改回来。 [CR 218111]
窗口必须被赋予图标
----------------------------------
一个窗口不再从包含改该窗口的应用程序继承其图标。要使用应用程序图标,你在升级后必须明确使用新枚举值AppIcon!将它赋予窗口。 [CR 204779]
ListView和TreeView控件事件改变
---------------------------------------------
PowerBuilder 7和8使用Microsoft Listview和Treeview控件。结果,你会看到一些行为改变要求你重新映射一些事件。当你进行鼠标操作时,一些事件不被触发,而且一些事件以与以前版本不同的顺序触发。
Treeview
--------
在PowerBuilder 7和8中,pbm_rbuttonup事件不被触发,但是被立即跟在pbm_tvnrclicked(TreeView“传统”的RightClicked!事件)后执行。因此, 你可以从pbm_rbuttonup拷贝任何代码到RightClicked!或让RightClicked!事件触发存在于pbm_rbuttonup中的任何代码。如果你触发该代码,记住在PowerBuilder 6中pbm_rbuttonup和pbm_tvnrclicked都被触发。要使该代码在PowerBuilder 6中象7或8中一样工作,你应该确保该代码在PowerBuilder 6中只被执行一次. 例如,你可以在pbm_rbuttonup中设置一个boolean变量,如果变量为TRUE就不让pbm_tvnrclicked中的代码被执行。你然后应该在pbm_tvnrclicked结束复位该变量为FALSE。
另外,在PowerBuilder 7和8中,使用鼠标右键来选择一个以前未被选择的TreeView项将导致当按钮被释放十前面的TreeView项重获焦点。在PowerBuilder 6中,使用鼠标右键选择一个TreeView项导致它变为“永久”选中。要复制该行为到PowerBuilder 7和8中,将this.SelectItem(handle)代码放在RightClicked!事中在触发(或执行)pbm_rbuttonup事件代码前执行。
在PowerBuilder 7和8中,pbm_tvnrdoubleclick(“传统”的RightDoubleClicked!事件)被被触发但是在pbm_rbuttondblclk事件前被执行。因此,你可以从RightDoubleClicked!事件中拷贝任何代码到pbm_rbuttondblclk事件或让pbm_rbuttondblclk 事件触发RightDoubleClicked!事件中以有的代码。同样,在PowerBuilder 6中两个事件都将触发,所以你必须用一个与上述相同的技巧以获得不依赖于版本的代码。 [CR 215628]
ListView
--------
在PowerBuilder 7和8种,如果你用右键点击特定的ListView项pbm_rbuttonup事件不被触发 ,但是如果你右键点击没有ListView项的空白区域它会被触发。一个新事件,pbm_contextmenu,当右键被释放时总被触发。特别地,这些事件被触发PowerBuilder 7和8:
当点击ListView中一个节点时:
按鼠标右键:
pbm_rbuttondown
释放鼠标右键:
pbm_lvnrclicked (the stock RightClicked! 事件)
pbm_contextmenu
当在ListView没有节点的空白区域点击时:
按下鼠标右键:
pbm_rbuttondown
pbm_lvnrclicked (普通的RightClicked! 事件)
pbm_contextmenu
释放鼠标右键:
pbm_rbuttonup
pbm_contextmenu
推荐你将当用鼠标右键确切选中的一个item是执行的代码放置在pbm_contextmenu 事件中。这是PFC ListView 对象在PowerBuilder 7 和 8中的工作方式。当鼠标右键在ListView空白区域释放时执行的代码应该留在pbm_rbuttonup 事件中。因为当你在空白区域右击时 pbm_contextmenu被调用两次, 你应该将代码放在RightClicked 事件来保留选择item的索引, 然后该index值将为零,且你应该将它作为pbm_contextmenu的一个测试来决定那些代码是否将被执行. [CR 215462]
这是一个代码例子:
实例变量:
private integer ii_item // private instance valuable of a
// tree view NVO
Clicked!事件脚本:
ii_item = index
pbm_rbuttonup脚本:
// Code to be executed when the right mouse button is released
// after being pressed in the ListView but NOT on 一个 item
// in that ListView
pbm_contextmenu脚本:
IF ii_item > 0 THEN
// Code to be executed when the right mouse button is
// released after being pressed on 一个 item in the ListView
END IF
pfc_u_lv和pfc_uv_lvs 对象被修改为使用pbm_contextmenu代替pbm_rbuttonup. [CR 215709]
**********************************************************************
(c) 1991-2001 Sybase公司及其子公司。所有权利被保留
Sybase公司及其子公司("Sybase")在该程序和文档中声明的版权为一个未发布工作,在前述的声明中表述的数据上首先许可的版本。声明权利不表示放弃Sybase的其他权利。见所有权声明。
所有权声明
该计算机程序和文档是 confidential trade secrets 和 the 属性 of Sybase公司及其子公司。
使用,检验,加工,拷贝,反编译,分解,转换和/或泄露给他人,无论全部或部分都被严格禁止,除了事先获得Sybase公司及其子公司的书面许可。
---- 我雷老虎以德服人,呵呵。 |
|