powerbuilder 8 뙽땯덎솿깹 (12) — 12.… · powerbuilder 8 뙽땯 덎솿깹 (12) —...

16
PowerBuilder 8 開發技術講座 (12) — 如何升級舊版本的 PowerBuilder 8.0 我們在以往開發很多的 PowerBuilder 程式,如何將這些程式升級至 PowerBuilder 8,是我們所關心的。在本文中我們要討論如何升級,並且說明升級時要注意的 事項以及一些 PowerBuilder 8 使用的技巧。 /倍力技術小組 一直是市場上最佳 IDE 物件導向開發工具的 PowerBuilder ,在邁入第十個年頭的 同時,推出了問世以來功能最強大的版本PowerBuilder 8.0 ,它不僅提供全方位 應用系統的開發能力,同時也讓 PowerBuilder 的使用者獲得最大的保障與回饋。 然而,在面臨一個新版本的同時,PowerBuilder 使用者的內心也在思考著如何讓 現有的 PowerBuilder 程式能夠順利地升級,而這也是本篇文章的主題。 升級之前應注意的事項 在尚未升級至 PowerBuilder 8.0 之前,首先我們先來說明應注意的事項。由於目 前使用者目前使用的版本不同,因此以下我們依版本來說明。 PowerBuilder 6 及以前版本升級 PowerBuilder 7 之後將某些物件的內容做了一些修改,而主要的有以下三個: (1) Nest Report PowerBuilder 6()以前的版本,Nested DataWindow Objects 並不一定需要 命名,可以是空白的,但是從 PowerBuilder 7 開始必須要給它一個名稱。預 設值是 dw_<序號>的方式自動給名稱,如果說你在昇級的過程中發生問題, 請檢查一下您的 DataWindow Nested DataWindow Objects 名稱是否為空白。 (2) Window Icon PowerBuilder 6()之前的版本,當你建立一個 Window Object 時,預設的 Icon 是【Application! 】,也就是 Application Object Icon 。但是在 PowerBuilder7 以後,已經沒有【Application!】,取而代之的是【AppIcon! 】, 而且你一定要指定一個 Icon Window Object (3) TreeView ListView 如果你的程式中有使用到 TreeView ListView 的話,你要注意上述兩個

Upload: trandieu

Post on 25-Sep-2018

299 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

PowerBuilder 8開發技術講座 (12) —

如何升級舊版本的 PowerBuilder至 8.0

我們在以往開發很多的 PowerBuilder程式,如何將這些程式升級至 PowerBuilder

8,是我們所關心的。在本文中我們要討論如何升級,並且說明升級時要注意的事項以及一些 PowerBuilder 8使用的技巧。

/倍力技術小組

一直是市場上最佳 IDE物件導向開發工具的 PowerBuilder,在邁入第十個年頭的同時,推出了問世以來功能最強大的版本— PowerBuilder 8.0,它不僅提供全方位應用系統的開發能力,同時也讓 PowerBuilder的使用者獲得最大的保障與回饋。然而,在面臨一個新版本的同時,PowerBuilder使用者的內心也在思考著如何讓現有的 PowerBuilder程式能夠順利地升級,而這也是本篇文章的主題。

升級之前應注意的事項

在尚未升級至 PowerBuilder 8.0之前,首先我們先來說明應注意的事項。由於目前使用者目前使用的版本不同,因此以下我們依版本來說明。

從 PowerBuilder 6及以前版本升級

在 PowerBuilder 7之後將某些物件的內容做了一些修改,而主要的有以下三個:

(1) Nest Report 在 PowerBuilder 6(含)以前的版本,Nested DataWindow Objects並不一定需要命名,可以是空白的,但是從 PowerBuilder 7開始必須要給它一個名稱。預設值是 dw_<序號>的方式自動給名稱,如果說你在昇級的過程中發生問題,請檢查一下您的DataWindow中Nested DataWindow Objects名稱是否為空白。

(2) Window Icon 在 PowerBuilder 6(含)之前的版本,當你建立一個Window Object時,預設的Icon是【Application!】,也就是 Application Object 的 Icon。但是在PowerBuilder7以後,已經沒有【Application!】,取而代之的是【AppIcon!】,而且你一定要指定一個 Icon給 Window Object。

(3) TreeView 與 ListView 如果你的程式中有使用到 TreeView 與 ListView的話,你要注意上述兩個

Page 2: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

Object有一些事件(Event)已經做了一些改變。詳細的說明請參考PB8Readme.txt的說明。

從 PowerBuilder 7升級

在 PowerBuilder 8 中由於加入了例外處理(Exception Handling)的功能,所以增加了幾個新的保留字,「TRY」、「CATCH」、「FINALLY」、「THROW」、「THROWS」。如果您在以前所開發的程式中有用下列的保留字,記得要先修改。

各版本

「~」問題。這是一個長久以來存在的繁體中文(Chinese Big5)問題,在PowerBuilder中,只要是中文字第二碼是「~」,如「年」、「業」、「誤」等,在撰寫程式的時侯就必須加上一個「~」,才能正常的顯示文字及撰寫編譯程式。而這個困擾已久的中文問題終於在 PowerBuilder 8.0中獲得解決,因為PowerBuilder 8.0已經改為是一個 DBCS(Double Byte Character Set)的雙位元版本,也就是說它可以正常地處理第二碼是「~」的中文字了,而你也不需在這些中文字的後面加上額外的「~」。這對新的 PowerBuilder程式而言是一個利多,然而對既有先前版本的程式在昇級的過程中,反而它會認為是錯誤的

字串。鑑於如此,倍力資訊撰寫了一個公用程式,來幫助你昇級,否則你直

接昇級的話會發現有一堆的錯誤,你必須一個一個去修正,這是滿累人的事。

升級方法

升級的方法其實很簡單,首先請至倍力資訊下載升級的公用程式

ftp://mpfile.mpinfo.com.tw/pb8/TOPB8.zip,如圖 1。

Page 3: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

圖 1 PowerBuilder 8.0升級公用程式

此升級程式所有內容包含在 TOPB8.ZIP檔,請自行解壓縮到新的目錄,例如C:\TOPB8,其中包含下列檔案:

l PowerBuilder升級程式使用手冊.doc l 修正中文碼程式:PBFIX.EXE l 修正中文碼程式目錄設定檔:TOPB8.INI l PB8升級程式執行檔:TOPB8.EXE l PBVM80.DLLBAK(修正版,PB6升級至 PB8使用) l pbvm80.dll、libjcc.dll、pbdwe80.dll及 pbvm80.dll(執行 TOPB8.EXE所需要

的)

此程式執行環境適用於 800 x 600以上解析度。

升級程式的執行步驟如下:

步驟一:備份程式

升級程式若因任何因素造成失敗,有可能影響 PowerBuilder程式庫檔案(.PBL)內容,所以在升級的過程中,升級程式會將所有 PBL程式庫檔另行備份,備份

Page 4: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

檔附屬檔名一律改為 「PB_」,但是仍然強烈建議您自行備份所有 PBL原始程式檔,並放在不同目錄,以免造成不可挽救的情形。

步驟二:修正中文碼

先開啟 TOPB8.INI檔案內容,由於修正中文檔的程式為 PBFIX.EXE,必須先指明 PBFIX.EXE檔的所在目錄,升級程式才會找到。請在 TOPB8.INI檔案內容的[PBFIX]區段,訂定 path的值,其內容就是 PBFIX.EXE的所在目錄,結尾請加上「\」符號,如下所示,其中假設 PBFIX.EXE是放在 C:\TOPB8的目錄上:

[PBFIX]

path=C:\TOPB8\

接下來執行 TOPB8.EXE,這會開啟 PowerBuilder 8升級程式視窗,如下圖所示:

圖 2 PowerBuilder 8升級程式視窗

你可點選「顯示程式」按鈕以顯示目前目錄內容,此程式只會顯示附屬檔為 PBL的檔案。你亦可點選上一目錄或根目錄按鈕,或者在顯示的目錄中按滑鼠左鍵兩

下,這些都可切換目錄。請切換到你要的目錄後,選擇你要修正的程式檔,你可

選擇一筆或多筆,操作與檔案總管方式相同。在選擇完成後,點選「修正中文碼」

Page 5: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

按鈕,若成功修正,會顯示轉檔成功的訊息。

轉檔成功後可以不用關閉 TOPB8.EXE程式,以待稍後使用。

步驟三:由 PowerBuilder 8.0開啟程式

接下來我們須使用 PowerBuilder 8.0開啟先前已經過中文碼修正的程式,讓PowerBuilder原始碼升級至 PowerBuilder 8.0。不過在此之前若你的原始程式碼是 PowerBuilder 6.x(含)之前的版本,則請先至 PowerBuilder安裝目錄下的/Shared/PowerBuilder/,備份原先 PBVM80.DLL檔至其他目錄,然後將將修正的PBVM80.DLLBAK取代之,並改名為 PBVM80.DLL。

接著開啟 PowerBuilder 8.0,請先行建立Workspace,然後在此Workspace下新增一個 Target,類型為 Existing Application,同時設定所有 Library Search Path,至於如何建立Workspace及 Target,請自行參考 PowerBuilder 8.0 Getting Started或參考 PowerBuilder進階應用一書。在此Wizard中,PowerBuilder 8.0會偵測到這是先前的版本,所以會出現Migrate Application視窗,請按 OK鍵即可。

若程式成功建立,表示程式已升級至 PowerBuilder 8.0的版本,但是並不表示完成,因為這些程式中若有沖碼的中文(例如「業」或「誤」字) ,其後的「~」符號會有一個空白字元,所以還要再經過下面的步驟重新修正才算完成。

若建立失敗,請檢查這些程式在原版本 PowerBuilder環境下是否可以正常 Full Rebuild及 Compiler,若無法正常完成,就不可能升級至 PowerBuilder 8.0。等正常完成後再重新執行上述所有步驟。

動作完成之後,請關閉 PowerBuilder 8.0。

步驟四:Export物件

執行 TOPB8.EXE(若已關閉請重新開啟),並切換到相同目錄及選擇所有程式庫檔(同步驟二) ,此時請點選「Export PB物件」按鈕,程式會自動將所選擇程式庫檔內的所有物件 Export出去到你所指定的工作目錄中的相對程式名稱目錄,例如 ABC.PBL會產生一個 ABC的目錄方便你進入此目錄 Import程式,在此目錄中產生.SR*檔。完成後會出現處理完成的訊息。

步驟五:Import物件

Page 6: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

接著要將先前 export出去的 PowerBuilder物件 import進來,但若是 PowerBuilder 6.x(含)之前的版本,請將先前備份的 PBVM80.DLL檔還原至 PowerBuilder安裝目錄下的/Shared/PowerBuilder/,如步驟三所述。(若無法還原,請先關閉

PowerBuilder 8.0 IDE) 開啟 PowerBuilder 8.0 IDE,打開先前的 Workspace及 Target。請開啟 ToolBar上的 Library Painter,這會開啟兩個 View,左邊的是 Tree View,右邊的是 List View,請在左方的 Tree View點選第一個.PBL程式庫使之反白,同時選擇 Entry->Import功能表項目,此時會出現 Select Import Files的視窗,請將目錄移到該 PBL的目錄並選擇該程式庫內所有物件的 .sr* 檔,你可一次選擇多筆。選擇好後按開啟鍵即可。接下來再依序選擇其他的 PBL檔並完成上述步驟即可。

成功完成上述步驟,則 PowerBuilder程式已成功升級至 PowerBuilder 8.0,並且中文問題應也一切 OK,經過測試能解決 99.99%的升級問題,如有程式未能升級請使用 Edit Source的功能,修改程式原始碼。

PowerBuilder 8使用的技巧

在升級至 PowerBuilder 8.0之後,你就可以開始「享受」PowerBuilder 8.0所帶給你全方位應用程式的開發能力,不過在此之前,我們先來說明一些 PowerBuilder 8.0的使用技巧。

一、 雙位元版本所衍生的問題

如前所述,PowerBuilder 8 已改為雙位元版本,所以在最初的版本發表時,它修改了幾個重要 Function,如 Left、Right、Mid等,舉個例子來說。

String ls_company = “倍力資訊 168”

如果是 Left(ls_company,4)的話,它會傳回「倍力資訊」,而非「倍力」,這是因為在雙位元版本中,中文字視為一個字,這跟原來所寫的程式定義是

不同的。所以這就害苦了使用雙位元的亞洲國家了,理論上一個中文字應

該就是一個字,但是我們都已經習慣了一個中文字算二個 Byte的模式,這樣原來的程式就要做部份的修改了。還好 Sybase在目前最新的修正版( PowerBuilder 8.0.1 Build 9121)裡及 PowerBuilder 8.0.2,改回原來的計算方式,也是功德一件。

二、 變數可以用雙位元字

Page 7: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

因為是雙位元版本,所以變數現在已經可以宣告成中文,例如:

String ls_倍力資訊 Long ll_列數

這是個滿有趣的功能,但是最好不要這樣用,因為當你寫跨語言的應用程

式時,如果你這樣宣告,可能大陸的程序員會完全看不懂你在寫啥了。

三、 承上所述,也許你會認為目錄名稱就可取中文了,這句話對一半,如果你

用中文建立目錄的話。舉例來說你建立一個「兵役系統」的目錄,你會發

現在 win98也許是 OK的,但是在 Win2000上,System Tree 竟然很奇怪的開啟不了這個中文名稱目錄。依筆者經驗最好還是用英文的目錄,我想

這個問題應該是 UniCode與 Big5的問題在某些字出現時會發生這樣子的狀況。

四、 如果後端的資料庫是用Microsoft SQL Server 2000的話,請一定要更新到

SP2,因為筆者常接到問題關於 PowerBuilder 8 或 7 連到 Microsoft SQL Server 2000時發生問題,例如 Blob不能寫超過 400K以上,連接出現錯誤… .等等。

五、 PowerBuilder 8與Microsoft SQL Server Outer Join語法問題設定方法

原 PB 6.5.1程式升級至 PB 8之後,原有 DataWindow物件中的語法會被更改,因而無法使用。例如:PB 6.5.1原本在 Graph Mode下產生的 SQL是

SELECT DISTINCT dbo.MLS_PERSON.NAME,

dbo.MLS_INCORPORATOR.COMP_NAME,

dbo.MLS_DBTR_LOAN_REL.DEBTOR_TYPE,

dbo.MLS_DBTR_LOAN_REL.CONTRACT_NO,

dbo.MLS_DBTR_LOAN_REL.PER_ID,

dbo.MLS_DBTR_LOAN_REL.BUSI_ID

FROM dbo.MLS_DBTR_LOAN_REL,

dbo.MLS_PERSON,

dbo.MLS_INCORPORATOR

WHERE ( dbo.MLS_PERSON.PER_ID =* dbo.MLS_DBTR_LOAN_REL.PER_ID) and

( dbo.MLS_INCORPORATOR.BUSI_ID =* dbo.MLS_DBTR_LOAN_REL.BUSI_ID) and

( ( dbo.MLS_DBTR_LOAN_REL.CONTRACT_NO like "%" ) );

Page 8: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

升級至 PB 8之後所產生 SQL如下:

SELECT DISTINCT dbo.MLS_PERSON.NAME,

dbo.MLS_INCORPORATOR.COMP_NAME,

dbo.MLS_DBTR_LOAN_REL.DEBTOR_TYPE,

dbo.MLS_DBTR_LOAN_REL.CONTRACT_NO,

dbo.MLS_DBTR_LOAN_REL.PER_ID,

dbo.MLS_DBTR_LOAN_REL.BUSI_ID

FROM dbo.MLS_PERSON RIGHT OUTER JOIN dbo.MLS_DBTR_LOAN_REL ON

dbo.MLS_PERSON.PER_ID = dbo.MLS_DBTR_LOAN_REL.PER_ID,

dbo.MLS_INCORPORATOR RIGHT OUTER JOIN dbo.MLS_DBTR_LOAN_REL ON

dbo.MLS_INCORPORATOR.BUSI_ID = dbo.MLS_DBTR_LOAN_REL.BUSI_ID

WHERE dbo.MLS_DBTR_LOAN_REL.CONTRACT_NO like "%";

圖 3 PB8 DataWindow所產生的執行錯誤

這會造成如圖 3 的執行錯誤,其發生原因是因為在 PowerBuilder 8 之中它支援ANSI SQL-92 的 Outer Joins語法,在使用 Native Driver連接 Sybase及MS SQL Server資料庫時,它會預設使用 ANSI SQL-92 的 Outer Joins語法,而這樣的語法會造成以上的錯誤。這並非是 PB 的 Bug,而是設定的問題。解決方法是在Database Profiles中檢查你所建立的 Native Driver設定,在 Syntax那一個頁次中,請將 Outer Join Syntax選項由預設的 ANSI改為 PB,如圖 4所示,然後你就會在Preview 頁次中看到這個選項設定所作的改變,如圖 5所示。接著你必須在程式之中如法炮製,也就是將 SQLCA.DBParm = "OJSyntax='PB'"加入至 SQLCA的DBParm中,然後就可以在 Graph Mode下使用 Outer Join,如此先前的問題也就不會出現了。

Page 9: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

圖 4 Outer Join Syntax選項由預設的 ANSI改為 PB

圖 5 DBParm中的設定

六、 使用 ODBC Driver連接MS SQL Server 2000時無法呼叫 Stored Procedure

問題 當你在 PowerBuilder中使用 ODBC連接MS SQL Server 2000時,呼叫Stored Procedure會出現圖 6的錯誤訊息。這時侯你需要將 DBParm加入CallEscape='No'的參數,就可以正常使用了。

Page 10: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

圖 6 呼叫MS SQL Server 2000中 Stored Procedure時出現的錯誤訊息

七、 PowerBuilder 與Microsoft Word、Excel 使用中文問題

在 PowerBuilder 8以前,因為不是雙位元版本,所以當你使用 OLE或 DDE的方法來去跟Microsoft Word、Excel做資料交換時,中文常會有亂碼產生,須要再用寫程式的方法去修改的問題,在 PowerBuilder 8已不復見。

PowerBuilder 8.0.2新功能介紹

截至目前為止 PowerBuilder 8最新的修正版本是 8.0.2,要上到這個修正版之前你必須先將 PowerBuilder 8至少更新到 8.0.1,才能至 Sybase網站下載 PowerBuilder 8.0.2的更新版。以下是 PowerBuilder 8.0.2的新功能介紹。

PowerBuilder Resource Monitor 在 PB 8.0.2中,新增了一個系統資源的監視工具,PowerBuilder Resource Monitor(PBRESMON.EXE),它是一個外掛的程式,放在Sybase\Shared\PowerBuilder目錄下。你可以透過這個監視工具來去判斷你是否有足夠的作業系統資源,如:USER/GDI等,以防止當你打開或操作PowerBuilder Painters時,造成你的系統資源不足,而發生當機或者是 General Protection Faults的現象。

它的安裝方法是,首先你必須開啟 PowerBuilder 8目錄底下的 PB.ini檔案,在其中加入以下的內容:

[ResourceMonitor] PerformResourceMonitoring=1 //1是打開這個功能、0是關閉。 ResourceTestTimeout=5000 //設定 TimeOut時間為五秒。 然後關閉 PowerBuilder 8之後再重新開啟 PowerBuilder 8,你的工作列就會出現一個小圖示如圖 7。

圖 7 Resource Monitor圖示

當你 double-clicking該圖示時,若顏色會由藍轉綠再轉藍,表示目前系統資

Page 11: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

源是正常的。如果由藍轉紅再轉藍,表示目前的系統資源不足,有可能發生

Painters不正常的當機。

Adaptive Server Enterprise 12.5 support 在 PowerBuilder 8.0.2中,加強了 Sybase Database的Native Driver,提供 Sybase ASE 12.5所有功能的完整支援。例如在 ASE 12.0 以前,欄位長度的限制在255的字元,如果超過這個長度,你就要宣告為 Text的資料型態了。但在 ASE 12.5中,它提供了 Char、VarChar、Binary與 VarBinary的資料型態允許超過255個字元,但是有一點限制就是你的 Native Driver Release選項設定須為12.5,而你安裝的 Sybase Open Client也必須為 ASE 12.5才支援此項功能。同時這個 Native Driver也支援 LDAP Server,以達到 Single Sign-On的功能。

Oracle 9i support 這是一個新的 Native Driver用來支援 Oracle 9i資料庫,在使用這個 Driver之前,你必須要確定你有安裝 Oracle 9i的 Client,否則會出現錯誤訊息,如圖8。

圖 8 未安裝 Oracle 9i client所出現之錯誤訊息

新增的功能有支援 Oracle 9i 的 Connection pooling機制,這個功能預設值是關閉的,但是你不能開啟這項功能在Connect AS : SYSDBA 或者是SYSOPER的狀態下,因為 Oracle 9i並不允許你這樣做。

Page 12: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

圖 9 Oracle 9i Native Driver有支援 Connection Pool機制

另外,新的 Oracle 9i Native Driver支援欄位型態為 NCHAR與 NVARCHAR2的資料型態,這個功能在 8i以前是不支援的。因為在 8i以前,當你宣告了一個表格而其中又有 NCHAR或是 NVARCHAR2資料型態的欄位時,因為DataWindow並不支援產生前導字元的功能,如下列範例: Update table1 set C1 = N EW STRING?where C1 = N LD STRING?

這是一個 SQL指令用來去修改 C1欄位的資料,其中的前導字元 N,是告訴Oracle Server將送進來的 ASNI字集,改為 Unicode字集,因為 Oracle 9i不需要將 ANSI字集改為 Unicode,所以就不用產生前導字元。 如果你是使用 Oracle stored procedures的話,你現在可以使用 LOB(Large Object)來做你的輸出參數了。另外也延伸了 TimeStamp 資料型態的精準度。

Unicode Database support 這是大家目前所關心的功能,因為全球化的趨勢,所以使用 Unicode來存資料無非是最好的選擇。所謂的 Unicode Database即是將資料庫的字元集(character set),設定為 UTF-8, UTF-16, UCS-2, 或 UCS-4所建立的資料庫。目前PowerBuilder所支援的Unicode資料庫有Oracle9i、Sybase 12.5、Anywhere 7.x以上的版本,這裡所謂的支援是指它會在 ANSI字集與 Unicode字集間自動幫你做轉換的動作,也就是說你存了一個「周杰倫」的繁體中文 Big 5碼,

Page 13: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

Native Driver會自動幫你轉換為繁體中文的 Unicode碼,這樣你的資料庫存的就是 Unicode的資料了。除此之外的資料庫,你必須讓 Database幫你做這個轉換的動作,否則存進去的字碼會有問題。以下是各資料庫的相關列表。

DBMS Interface Support

Native 支援 Unicode,並且可以在 DBCS與 Unicode之間做自動轉換。要注意的是必須在 Open Client 中設定為 DBCS的字元集,而且欄位資料型態設定為 NCHAR or NVARCHAR的資料也可以讀取。

Adaptive Server Enterprise 12.5

ODBC, OLE DB, JDBC

支援 Unicode,並且可以在 DBCS與 Unicode之間做自動轉換。

Native 支援 Unicode,並且可以在 DBCS與 Unicode之間做自動轉換。而且欄位資料型態設定為 NCHAR or NVARCHAR的資料也可以讀取。

ODBC 如果你是用 ODBC來連接資料庫的話,你必須確定你的ODBC Driver是支援 Unicode的。而且欄位資料型態設定為 NCHAR or NVARCHAR的資料也可以讀取。

Oracle9i

OLE DB, JDBC

支援 Unicode,並且可以在 DBCS與 Unicode之間做自動轉換。而且欄位資料型態設定為 NCHAR or NVARCHAR的資料也可以讀取。

Native 無

ODBC 支援 Unicode,並且可以在 DBCS與 Unicode之間做自動轉換。要注意的一點在設定 ODBC Profile時,要設定translator為 Adaptive Server Anywhere 7.0 Translator,如圖 10及 11。

Adaptive Server Anywhere 7.x, 8.x

OLE DB, JDBC

支援 Unicode,並且可以在 DBCS與 Unicode之間做自動轉換。

Page 14: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

圖 10 選擇 Adaptive Server Anywhere的 Translator (1)

圖 11 選擇 Adaptive Server Anywhere的 Translator (2)

目前我們以一台安裝Window 2000 Pro繁體中文版,另一台安裝Window2000 Pro簡體中文版來測試這項功能。以 Oracle 9i來說,當你在安裝 Oracle Client時,一定要把 Client的設定設為你所要使用的多國語系,舉例而言,假設你安裝 Oracle 9i Client在 Window2000 Pro繁體中文版上,Oracle 的預設語言只有繁體中文及英文,你必須自行再勾選簡體中文,如圖 12,否則會出現資料無法異動的問題。

Page 15: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

圖 12 在 Oracle client安裝時選擇多種語言

當你完成了安裝之後,在繁體中文的電腦中,你輸入「陳水扁」三個字,

儲存後,你會在另外一台簡體中文的電腦中出現下列資料,透過 Native Driver與資料庫的作用,它會自動幫你轉碼。

圖 13 繁體中文資料

圖 14 簡體中文資料

支援Windows XP作業系統 自Windows XP上市以來,筆者接獲許多使用者詢問 PowerBuilder現有版本是否可在其上執行,而 Sybase原廠的回應是 PowerBuilder尚未經過Windows XP的認證,直到 PowerBuilder 8.0.2出現為止。PowerBuilder 8.0.2是 Sybase

Page 16: PowerBuilder 8 뙽땯덎솿깹 (12) — 12.… · PowerBuilder 8 뙽땯 덎솿깹 (12) — 꿅싂PowerBuilder 8.0 귌 뙽땯 PowerBuilder 땻 ꅁ 녎덯 땻 꿅 PowerBuilder 8ꅁ걏

唯一正式說明通過Windows XP認證的版本,它會完全支援Windows XP的各項環境。

總結

往往我們在昇級的過程式,總會帶來痛苦,但是有好的方法卻能事半功倍,希望

這篇文章能帶給大家無痛昇級。