SetTransObject

saction saction saction

函式作用:為數據視窗或者datastore指定一個事務對象。必須通過事務對象,PowerBuilder才能夠和資料庫進行通信,才能夠進行數據處理。這裡的事務對象是基於程式的事務對象,可以對資料庫事務進行更多的控制。在程式中,通過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回退事務。
函式語法: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

相關詞條

相關搜尋

熱門詞條

聯絡我們