附錄\A.Server端元件屬性\InfoTransaction

InfoTransaction

【功能說明】

用途:用來設定當某一個UpdateComp執行Insert/Update/Delete的同時,對其他的資料表進行線上過帳與交易處理。此元件會在UpdateComp交易Commit前,自動下達交易的SQL Command

 

【元件屬性】

Name(名稱)(string)

元件名稱,用於識別該元件。

 

UpdateComp(對應的UdateComp)(UpdateComponent)

所要對應的UpdateComponent元件,當UpdateComp發生Insert/Delete/Update時會觸發本元件的過帳與交易動作。

 

Transactions(過帳設定)(TransactionCollection)

設定過帳的具體內容,例如:目的資料表,交易模式,鍵值欄位對應,過帳欄位對應等。每個InfoTransaction都可定義多個交易動作,以過帳到不同的資料表中。具體設定及說明如下:

TransStep(步驟次序)(int32):代表Transation的步驟次序,從 1開始,此TransStep可從將來的設定U/I來自動編號。

TransTableName(目的資料表)(string):所要交易的對方資料表名稱。

TransMode(交易模式)(enum):共有4種:

 AutoAppend(自動新增):交易時,用TransKeyFields去找目的資料表(TransTableName)時,如果找不到,就自動新增。新增時會以「TransKeyFiels」來InsertTransTableName中。

 Exception(異常):交易時,用TransKeyFields去找目的資料表(TransTableName)時,如果找不到,即會讓相對的UpdateComp發出異常,並終止交易(RollBack)。

 Ignore(忽略):交易時,用TransKeyFields去找目的資料表(TransTableName)時,如果找不到,則不新增也不發出交易異常,會忽略對目前這個步驟的交易,並繼續往下執行(下一個TransStep)。

 AlwaysAppend(總是新增):交易時,不必用TransKeyFields去找目的資料表(TransTableName),會固定在TransTableNameInsert資料,也就是說原始資料表Insert一筆,目的資料表也Insert一筆;原始資料表刪除一筆,目的資料表照樣也是Insert一筆;如果是原始資料表進行更改,則目的資料表會Insert兩筆,一筆更改前的值,另一筆為更改後的值。

 

AutoNumber(自動編號元件)(AutoNumber):當 TransModeAutoAppend/AlwaysAppend時,如果目的資料表的主鍵需要自動編號時,可用來設定在新增資料時的自動編號原則。

 

TransFields(過帳欄位)(TransFieldCollection):過帳欄位對應,也就是說從原始資料表UpdateComp交易的目前筆資料,要 取出那一個欄位(或計算式)來對目的資料表的指定欄位進行累加減或置換的動作。可以設定多個過帳欄位,系統會自動合併在同一個Update語法中。其屬性如下:

 

DesField(目的欄位名稱)(string):指所要過帳的對方欄位名稱。

 

ScrField(來源欄位名稱)(string):指UpdateComp內的主Table的欄位名稱。(就是對應InfoCommand內的欄位)。

 

ScrGetValue(來源公式)(string):當不能以UpdateCom內的某一個欄位來取值時,則可以改用此函數的方式來取值,如MyGetVal()的方式取值。

 

UpdateMode(更改模式)(enum):共有5種:

Inc(累加):將目的資料表的DesField累加,以scrFieldScrGetValue的值累加。

Dec(累減):將目的資料表的DesField累減,以scrFieldScrGetValue的值累減。

Replace(替換):將目的資料表的DesFieldscrFieldScrGetValue的值替換。

WriteBack(寫回替換):反向將UpdateComponent的主TablescrField替換成目的資料表的DesField內容(回寫更改ScrField欄位)

Disable(失效):此過帳欄位暫時無效。

 

TransKeyFields(過帳鍵值欄位)(TransKeyFieldCollection):目的資料表所要的where之對應欄位,可以設定多個欄位的對應關係。組合方式為Where DesField=ScrField值(或ScrGetValueReturn值),如果有多個鍵值欄位,其Where間用「and」來組合。屬性如下:

 

DesField(目的鍵值欄位名稱)(string):指過帳目的資料表裡的欄位名稱。

 

ScrField(來源鍵值欄位名稱)(string):指UpdateComponent內的主資料表的欄位名稱。(就是關聯的InfoCommand內的欄位)。

ScrGetValue(來源公式)(string):當不能以UpdateComponent內的某一個欄位來取值,則改用此屬性來取值。

 

WhereMode(Where關係的模式)(enum):組Where語句的模式,指針對DesField的模式。

 

 WhereOnly:在對目的資料表交易時,會將此DesField放入Where的條件中,並配合ScrField取值。

 InsertOnly:與WhereOnly相反,交易時不會將此DesField放入Where條件中,只在AutoAppend/AlwaysAppend發生Insert資料時,用來組Insert的欄位內容所使用。

 Both:兩者都使用到,預設為both。此代表即會放入Where條件中,也會在Insert資料時組合欄位的內容。

 

WhenInsert(新增時過帳)(bool):來源資料表在新增時是否要執行此步驟過帳。

WhenDelete(刪除時過帳)(bool):源資料表在刪除時是否要執行此步驟過帳。

WhenUpdate(刪除時過帳)(bool):來源資料表在更改時是否要執行此步驟過帳。

 

【事件】

BeforeTrans(交易前執行程序):交易前執行的事件。

AfterTrans(交易後執行程序):交易後執行的事件。

 

【功能函數】

此元件無功能函數。

 

【其他說明】

此元件的過帳功能會結合UpdateComponent的異動功能共同

進行交易,成功會一起成功,失敗會一起失敗(異常新增模式為不予理會時除外),系統會取出所要交易的欄位,所以要確定所要過帳交易的欄位資料一定要有值,不能為Null,否則交易後數值不會有增加(Null加上任何值還是Null)

 

元件在過帳時會先去Select目的資料表的舊資料,在Update   

時會自動加舊資料值於where語句中,以保證交易過程中無其他User再異動其參考值,讓交易系統能精確與一致。

 

後端的Transaction中,可以使用另一個視覺方式來設計  

Table間的過帳關係,在Transaction元件上"Double Click"即可,其中,可以用"Add"/"Delete"來新增與刪除Step,並可以 在每個Step的左方"圓點"Click來設定KeyField鍵值關係,在右方的"三角型"Click來設定TransField過帳欄位關係,還可以將Show Detail打勾,讓彼此的欄位關係全部顯示出來。

 

TransModeAlwaysAppend時,來源資料表在Insert/Update/Delete的模式下,系統會根據TransFields.UpdateModeReplace/inc/dec情況下,會有不同的存入值,特別說明如下:

 

來源資料表在Insert模式:目的資料表欄位在Replace時會存入新值,在inc時會存入「正新值」,在dec時會存入「負新值」。

來源資料表在Delete模式:目的資料表欄位在Replace時會存入舊值,在inc時會存入「負舊值」,在dec時會存入「正舊值」。

來源資料表在 Update模式:目的資料表會有兩筆Insert,前一筆在Replace時會存入舊值,在inc時會存入「負舊值,在dec時會存入「正舊值」;後一筆則在Replace時會存入新值,在inc時會存入「正新值」,dec時會存入「負新值」。

Top of Page