複製鏈接
請複製以下鏈接發送給好友

SetTransObject

鎖定
為數據窗口或者DataStore指定一個事務對象。必須通過事務對象,PowerBuilder才能夠和數據庫進行通信,才能夠進行數據處理
外文名
SetTransObject
基    於
程序的事務對象
控    制
數據庫事務
通    過
SQL語句中

SetTransObject函數作用

這裏的事務對象是基於程序的事務對象,可以對數據庫事務進行更多的控制。在程序中,通過SQL語句中的Connect、 Rollback、CommIT等進行事務的控制。使用該事務對象,可以為PB應用程序建立一個和數據庫的永久性聯結,在數據窗口或者DataStore每次進行Retrieve或者Update前不必再臨時建立聯結,而建立聯結是比較費資源的一種操作,所以使用該函數可以提供更好的程序執行性能。在調用該函數之前,應該設置事務對象的各個參數。缺省的事務對象SQLCA,是一個Transaction類型的全局變量,可以在PB應用程序中直接使用。也可以定義我們自己的事務對象。和該函數類型的還有SetTrans,兩者的區別是:SetTransObject不能對事務進行自動控制,都是由程序來控制的;使用函數SetTrans時程序不能控制事務對象,這時的事務都是自動控制的。使用事務對象按照如下步驟進行:
(1)設置事務對象的參數,根據DBMS的不同而不同,可以在DB Profile對話框的Preview中找到語法。這些腳本通常在Application的Open事件中編寫;
(2)使用SQL語句Connect聯結數據庫。通常也是在Application的Open事件中編寫該教本。需要注意的是,一定要檢查是否聯結成功。可以通過SQLCA.SQLCode來判斷,如果SQLCA.SQLCode等於1則表示聯結成功。如果聯結不成功,則不應該繼續允許。
(3)調用SetTransObject函數,為數據窗口對象設置事務對象。通常在窗口的Open事件或者數據窗口的Constructor事件中編寫。
(4)在調用函數Update之後,檢查返回值是否為1,如果是1則使用事務語句CommIT提交數據,否則調用Rollback回退事務。

SetTransObject函數語法

:integer dwcontrol.SetTransObject ( transaction transaction )
ldwcontrol:要設置事務對象的DataWindow、下拉子數據窗口或者DataStore的名稱。
ltransaction:事務對象名稱,是Transaction類型的變量。
返 回 值:integer類型,1表示成功,如果發生錯誤則返回-1,如果任意參數為Null則返回Null。
代碼實例:
例1:以下腳本在窗口的Open事件中編寫:
dw_1.SetTransObject(SQLCA)
例子2:以下腳本在數據窗口的Constructor事件中編寫:
This.SetTransObject(SQLCA)
例子3:以下教本在Application對象的Open事件中編寫:
// Profile Mpxt
SQLCA.DBMS = ProfileString('setup.ini','databASE','DBMS','')
SQLCA.AutoCommIT = False
SQLCA.DBParm = ProfileString('setup.ini','databASE','DBParm','')
connect;
if sqlca.SQLcode = 0 then
Open(w_main)
else
MessageBox('錯誤','不能和數據庫建立連接。按任意鍵關閉系統......',StopSign!)
halt close;
end if