附錄\B. Server端元件\InfoTransaction

【功能說明】

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

 

【元件屬性】

Name(名稱)(string)

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

 

Transactions(過帳設定)(TransactionCollection)

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

 

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兩筆,一筆更改前的值,另一筆為更改後的值。

 

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

ScrGetValue(來源公式)(string)當不能以UpdateCom內的某

一個欄位來取值時,則可以改用此函數的方式來取值,如

MyGetVal()的方式取值。

 

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

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

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

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

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

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

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

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

 

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

 

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

 

UpdateComp(對應的UdateComp)(UpdateComponent)

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

 

【事件】

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