第一種情況:
如果單擊PB環境中的db profile工具列按鈕,然後選擇相應的介面,最後單擊“new...”按鈕時出現提示時
解決方案:
我們在使用PowerBuilder的直聯結口(native drivers)聯結諸如Sybase或Oracle這樣的大型資料庫時,有時會發生聯不上庫的情況, 並且遇到提示資訊 “DBMS XXX is not supported inyour current installation”。
產生這種現象的原因是我們沒有正確地安裝或設定好PB的native driver或資料庫的用戶端軟體(如Sybase的Open Client)。具體的有以下三個原因:
1. PowerBuilder安裝的是32位的,而資料庫的用戶端軟體安裝的卻是16位的;或PowerBuilder安裝的是16位的,而資料庫的用戶端軟體安裝的卻是32位的。
2. native driver的DLLs所在的路徑沒有包括在機器的系統路徑中。
3. 資料庫的用戶端軟體的DLLs所在的路徑沒有包括在機器的系統路徑中。
對上述三種原因的解決方案如下:
1. 確認PB和資料庫的用戶端軟體都是32位的或都是16位的。
2. 將PB的運行環境的路徑(5.0 32-bit long name: \Program Files\CommonFiles\Poweresoft Shared, 5.0 32-bit short name或5.0 16-bit: \pwrs\sys32,6.0: \Program Files\Powersoft\shared)加到機器的系統路徑中(autoexec.bat中的path)。或者,比如用的sqlserver資料庫,把ntwdblib.dll拷到system32檔案夾下。
3. 將資料庫的用戶端軟體的DLLs所在的路徑(如Sybase Open Client的路徑\sybase\bin, Oracle SQL*NET的路徑\orawin\sys32)加到機器的系統路徑中。
第二種情況:
當第一種情況通過沒有問題時,而在程式運行時出現提示時
解決方案:
出現這個錯誤的原因不是 SQL ANYWHERE 的問題,是 SQLCA 的 DBMS 屬性沒有設定正確。大多數人在使用 PB 開發程式時關於 SQLCA 的屬性設定往往愛用 ProfileString 函數,其中的檔案名稱參數往往又不帶路徑,或者又使用了絕對路徑。不管是那種情況,都可能出現
ProfileString 找不到檔案的情況。這樣 SQLCA 的 DBMS 屬性就沒有被賦值。所以才會出現 "DBMS NOT Support ..."字樣的資訊。
當然如果是相對路徑的話,只會在 PB 開發環境中出現,這時只要用 PB 的文字編輯器開啟 INI 檔案一次,這樣 PB 的目前的目錄又回到了 INI 檔案所在目錄
還有許多的初學者,採用的 INI 檔案還是 PB.INI ,即:Sqlca.dbms = ProfileString ( "pb.ini", "database", "dbms", "") ,pb的安裝目錄裡存在這個檔案,所以在設定資料庫連接的時候不要用這個檔案名稱,PB 每次串連一個不同的資料庫都會更改 PB.iNI 。所以經常出現這種情況。而且這種程式放到另外一台機上不能運行,除非將 PB.INI 也 Copy 了