一、打開任意一個數據窗時,提示“sybase powerbuilder已停止工作”解決方法,錯誤如圖所示
解決方法1:
找到注冊表(運行:regedit)中HKEY_USERS\S-1-5-21-1060284298-1004336348-839522115-1003\Software\Sybase\PowerBuilder\9.0\Layout\Default,然后刪除其中的Datawindow項目
解決方法2:
卸載PB 清理注冊表,重啟電腦,換個路徑重新安裝。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、使用return 1 處理報錯信息:
在DataWindow的DBError事件下:寫腳本return 1 (如果返回1會觸發itemchange事件)
Return value
Set the return code to affect the outcome of the event:
0 (Default) Reject the data value and show an error message box
1 Reject the data value with no message box
2 Accept the data value
3 Reject the data value but allow focus to change
itemerror事件的返回值
0——缺省值,顯示出錯信息,拒絕輸入值並顯示有效性檢查,出錯信息同時不允許移走焦點;
1——不顯示出錯信息,拒絕輸入信息,同時不允許移走焦點;
2——不顯示出錯信息,接收輸入值;
3——不顯示出錯信息,拒絕輸入信息,允許移走焦點;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、數據管道 pipelineobject.Start 錯誤列表
Error values are:
-1 Pipe open failed
-2 Too many columns
-3 Table already exists
-4 Table does not exist
-5 Missing connection
-6 Wrong arguments
-7 Column mismatch
-8 Fatal SQL error in source
-9 Fatal SQL error in destination
-10 Maximum number of errors exceeded
-12 Bad table syntax
-13 Key required but not supplied
-15 Pipe already in progress
-16 Error in source database
-17 Error in destination database
-18 Destination database is read-only
If any argument's value is NULL, Start returns NULL.
String ls_errortext
IF IsNull( ai_ErrCode ) THEN
ls_errortext = "傳遞了空參數!"
RETURN ''
END IF
CHOOSE CASE ai_ErrCode
CASE - 1
ls_errortext = "數據管道打開錯誤!請檢查所有的對象是否有效.錯誤代碼:" + String( ai_ErrCode )
CASE - 2
ls_errortext = "列數超過上限!錯誤代碼:" + String( ai_ErrCode )
CASE - 3
ls_errortext = "目的表已存在!錯誤代碼:" + String( ai_ErrCode )
CASE - 4
ls_errortext = "目的表不存在!錯誤代碼:" + String( ai_ErrCode )
CASE - 5 //common start()函數與repair()函數公用錯誤代碼
ls_errortext = "連接被斷開!錯誤代碼:" + String( ai_ErrCode )
CASE - 6
ls_errortext = "錯誤參數!"
CASE - 7
ls_errortext = "列類型不匹配!錯誤代碼:" + String( ai_ErrCode )
CASE - 8
ls_errortext = "源SQL語法錯誤!錯誤代碼:" + String( ai_ErrCode )
CASE - 9 //common
ls_errortext = "目的SQL語法錯誤!錯誤代碼:" + String( ai_ErrCode )
CASE - 10 //common
ls_errortext = "發生錯誤個數超過最大界定錯誤數!錯誤代碼:" + String( ai_ErrCode )
CASE - 11 //repair專用錯誤代碼
ls_errortext = "無效的窗口句柄!錯誤代碼:" + String( ai_ErrCode )
CASE - 12 //common
ls_errortext = "錯誤的表語法!錯誤代碼:" + String( ai_ErrCode )
CASE - 13
ls_errortext = "空的主鍵值!錯誤代碼:" + String( ai_ErrCode )
CASE - 15 //common
ls_errortext = "該數據管道已打開!錯誤代碼:" + String( ai_ErrCode )
CASE - 16
ls_errortext = "錯誤發生在源數據庫!錯誤代碼:" + String( ai_ErrCode )
CASE - 17 //common
ls_errortext = "錯誤發生在目的數據庫!錯誤代碼:" + String( ai_ErrCode )
CASE - 18 //common
ls_errortext = "目標數據庫只讀!錯誤代碼:" + String( ai_ErrCode )
END CHOOSE
RETURN ls_errortext
1、dw控件沒有加settransobject。
3、加了settranobject但位置不對;應該寫在增刪改查之前。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string error_text
CHOOSE CASE sqlDBCode
case 1 error_text = '違反唯一索引!'
case 1400 error_text = '字段不能為空!'
case 1407 error_text = '字段不能為空!'
case 1401 error_text = '字段太長!'
case 1438 error_text = '數值大於列允許的最大精度!'
case 2291 error_text = '出現非法字段!'
case 1031 error_text = '權限不足!'
case 911 error_text = '注冊名無效!' //權限專用
case 922 error_text = '特殊字符無效!' //權限專用
CASE 1017 error_text = '非法的用戶名或口令,拒絕登錄!'
CASE 12154 error_text = '不能分解服務名稱!'
CASE 01005 error_text = '未給出口令或口令錯誤,拒絕登錄!'
CASE 01935 error_text = '注冊名項輸入的名稱為系統關鍵字,禁止作為注冊名使用!'
CASE 540 error_text = '數據表或視圖不存在!'
CASE 942 error_text = '數據表或視圖不存在!'
CASE 903 error_text = '非法列名!'
CASE 1403 error_text = '未查找到符合條件的數據!'
CASE -3 error_text = '在您讀入數據和存盤操作過程中,服務器中的數據已被別的用戶或窗口改變,請重新讀取數據后再試!'
CASE 6 error_text = '網絡同數據庫服務器的連接已經中斷,請關閉應用程序然后重新打開.'
CASE 50 error_text = '網絡同數據庫服務器的連接已經中斷,請關閉應用程序然后重新打開.'
case 1920 error_text = '用戶名稱與另外的用戶或角色名稱沖突'
case 988 error_text = '缺少口令或其非法!'
case 1918 error_text = '該ORACLE用戶不存在!'
case 1940 error_text = '不能放棄一個當前被連接的操作員,即當前刪除的操作員正在使用!'
CASE ELSE
if isnull(sqlca.sqlErrText) or sqlca.sqlErrText = '' then
error_text = '數據操作失敗!'
else
error_text = sqlca.sqlErrText
end if
END CHOOSE
return MessageBox('錯誤',error_text,RetrYCancel!,1)
//DBError參數
Buffer 發生錯誤所在的緩沖區
Row 發生第一筆錯誤的行數
SqlDBCode 數據庫錯誤代碼
SqlErrText 數據庫錯誤信息
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
六、PowerBuilder運行錯誤提示信息
錯誤號 |
含義 |
1 |
被零除 |
2 |
引用NULL對象 |
3 |
數組越界 |
4 |
枚舉值超出函數范圍 |
5 |
函數中遇到負值 |
6 |
指定的數據窗口行/列無效 |
7 |
鏈接引用時,出現不可解決的外部引用 |
8 |
引用帶有NULL下表的數組 |
9 |
DLL函數未當前程序中 |
10 |
DLL函數不支持的參數類型 |
11 |
對象文件已過期,必須轉化為當前版本 |
12 |
數據窗口列類型與GETITEM類型不匹配 |
13 |
不可知的屬性引用 |
14 |
為外部函數打開錯誤DLL庫 |
15 |
錯誤調用外部函數 |
16 |
超出最大字符串的長度 |
17 |
數據窗口控件中引用的數據窗口對象不存在 |
18 |
函數未返回值 |
19 |
不能將任意變量中NAME轉化為NAME |
20 |
沒有成功地准備好數據庫命令 |
21 |
運行時,不正確地引用函數 |
22 |
不可知的對象類型 |
23 |
不能將NAME類型的對象賦值為NAME類型的對象 |
24 |
函數調用與其定義不匹配 |
25 |
DOUBLE或REAL表達式溢出 |
26 |
不支持對NAME字段的賦值 |
27 |
非整型指數不能為負 |
28 |
VBX錯誤:NAME |
29 |
ANY變量需要非整組值 |
30 |
外部對象不支持數據類型:NAME |
31 |
不支持外部對象數據類型:NAME |
32 |
調用外部對象函數NAME時,未找到名字 |
33 |
調用外部對象函數NAME時,參數類型不合法 |
34 |
調用外部對象函數NAME時,使用不正確的參數數目 |
35 |
錯誤調用外部對象函數NAME |
36 |
訪問外部對象屬性NAME時,未找到名稱 |
37 |
訪問外部對象屬性NAME時,類型不匹配 |
38 |
詢問外部對象屬性NAME時,下標數目不正確 |
39 |
錯誤訪問外部對象屬性NAME |
40 |
與表達式中任意數據類型不匹配 |
41 |
表達式中有不合法的任意數據類型 |
42 |
在DLL函數NAME中,運行時所指定的參數類型與所要求的參數類型不相同 |
43 |
父對象不存在 |
44 |
祖先的函數中具有發生沖突的參數及返回類型 |
45 |
外部表溢出 |
46 |
空的對象引用不能被賦值或傳遞給同類型的變量 |
47 |
變量需要數組值 |
48 |
數組的大小與對象的轉換不匹配 |
49 |
數組的類型與對象的轉換不匹配 |
50 |
分布服務錯誤 |
51 |
|
52 |
分布通訊錯誤 |
53 |
未激活所需服務器 |
54 |
服務器未接受請求 |
55 |
請求非正常終止 |
56 |
非完整地相應請求 |
57 |
未連接 |
58 |
對象實例不存在 |
59 |
不合法的列范圍 |
60 |
不合法的行范圍 |
61 |
將NUMBER維數組不合法地轉換成對象 |
62 |
服務器忙 |
63 |
|
64 |
賦值需要數組對象 |