【功能說明】

用途:使用於Server端,用於構建多層資料關聯連接,就是以InfoCommand來構成Master/Detail多層的關係,並能控制一起存檔(同一個Transaction)等機制。

 

【元件屬性】

Name(名稱)(string)

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

 

Detail(明細表Command名稱)(InfoCommand)

明細資料表的InfoCommand名稱。

 

DetailColumns(明細表的欄位名稱)(ColumnItems)

明細資料表用於與主資料表關聯的欄位名稱,可以設定一個到多個。

 

Master(主表Command名稱)(InfoCommand)

主資料表的InfoCommand名稱。

 

MasterColumns(主表的欄位名稱)(ColumnItems)

主資料表用於與明細資料表的關聯欄位名稱,必須與DetailColumns相互對應,同樣一個到多個。

 

DynamicTableName(動態表名)(System.Boolean)

用於運行時和設計時表名不同的場合。

 

【事件】

此元件無事件。

 

【功能函數】

此元件無功能函數。

 

【其他說明】

 (1) InfoDataSource可以串連多個Detail次檔,如一個Master,兩個或兩個以上的Detail;也可以是Detail又有自己的Detail多階的關係,如一個Master對一個Detail,此Detail有對應另一個Detail,這樣就成了Master/Detail/Detail三階關係,也可以往下四階五階,但須注意階層越多,因要彼此取出相對資料,所以會有效能的負擔,如超過三層以上的情況必須考量效能。

 (2) InfoDataSource另一個工作就是當與多個UpdateComp元件配合時,必須依照UpdateCompAutoTrans來負責控制Begin Trans/Commit TransRollBack Trans的時機,當多階一起異動 (包括多階的Insert/Delete/Update)時,系統會自動控制全部一起Commit或一起RollBack  (如果其中有任一命令發生錯誤的話),來保障資料交易的精確性與穩定性。

 

 

UpdateComponent

 

 

【功能說明】

用途:使用於Server端,本元件是為了能自動化處理Client端所要求的Insert/Update/Delete等需求,EEP Server會以此元件來下達對應的Insert/Update/DeleteSQL指令。本元件須連接到對應的InfoCommand元件,並成雙成對。

 

【元件屬性】

Name(名稱)(string)

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

 

AutoTrans(自動交易)(bool)

預設為True,建議最好設定為True,因為如果設成True,系統在處理Client端的Insert/Update/Delete要求時自動下Begin/Commit Transaction,有發生異常或錯誤時會自動下RollbackTransaction語句。

 

ExceptJoin(關聯欄位排除)(bool)

True/FalseTrue時,會自動分析SqlCommand,將Left Join欄位自動加入FieldAttrs中,並設為UpdateEnable=False(不參與更改),以防止對Left Join欄位下達Update而發生錯誤,預設為True

 

FieldAttrs( 預設欄位明細 )(FieldAttrCollection)

特殊控制每個欄位的預設值或是否更改,欄位屬性為多個 FieldAttr 物件所組成,每個 FieldAttr 又可以設定下列屬性。

DataField(欄位名稱)(string)所要控制的欄位名稱,本名稱必須在                     SqlCommand中要有此欄位。

UpdateEnable( 更改致能 )(bool)True 代表此欄位要進行更改, False 代表不進行更改,目的是用來過濾有 Left Join 別表的欄位不要進行對主資料表進行更改。(此用在 Update/Insert)

CheckNull( 檢查空白 )(bool) True/False ,一般檢查資料有三種,一種在 Client 端用 DefaultValidate 元件的機制檢查,第二種則為本屬性,如指定本DataField 欄位內容為空白者,系統即會放棄回寫資料庫的動作,並發出錯誤訊息通知 Client ,第三種為 Database 的設定,資料庫上也有 CheckNull 的設定,同樣也可不允許欄位空白。因為在大部份情況下希望發展的系統不受單一種類資料庫所限制,再加上 SUpdateComp CheckNull 警告時點與其訊息不易控制的情況下,還是建議寫在 Client 端較佳。(此用在Update/Insert 時)。

TrimLength( 截斷長度 )(int) 可以讓型態為 String 的欄位依此長度截斷 , 預設為 0 代表不截斷。

DefaultValue( 預設值 )(string) 支持文字、數字,會依欄位型態自動轉換,如果要動態的內容值,也可使用函數方式,或者可以配合 UpdateComp BeforeUpdate BeforeInsert 的事件來處理(此用在Update/Insert 時)。函數設定方法:例如:給一個 DateTime 類型的欄位設值,可以在此寫上 MyGetdate() (請加括號以表示此為函數)。在程式如下:

public DateTime MyGetDate()

{

return DateTime.Now.Date;

}

為了簡化,你也可以用 EEP 系統變數,如 _Today 即可取代以上的程式, _ServerDay 代表主機上的日期等等。

DefaultMode( 預設選項 )(enum) 為控制 DefaultValue 的模式,共有三種: 1. 新增時預設;  2. 更改時預設;  3. 新增更改時都預設。

WhereMode( 加入 Where)(bool) True/False ,當 insertUpdate 時,其欄位內容的舊值要不要加入 where 條件當中。

LogInfo(異動記錄)(LogInfo)

本屬性用來設定自動記錄User對本資料的新增、更改與刪除動作,細節說明見LogInfo元件。

 

RowAffectsCheck(影響行數檢查)(System.Boolean)

設置是否要檢查更新影響的行數。

 

SelectCmd(對應InfoCommand)(InfoCommand)

對應的InfoCommand,須選擇對應的InfoCommand,否則UpdateComp則無法獨立運作。

 

ServerModify(Server同步)(bool)

此屬性用在當後端資料庫有TriggerStored Procedure時,或有Identity類型欄位時,當UpdateComp存入後必須重新Select出最新的資料給相對的Client,才能讓Client的用戶取得最新的資料。在InfoDataSet中也有一個ServerModify的屬性,兩者必須相互搭配。

 

ServerModifyColumns(伺服更新參考欄位)(collection)

ServerModify=True時,要重新取出資料到Client端時,會以此設定的指定欄位加入Where語句中去重讀Server端資料,沒設定則自動以 InfoCommandKeyFieldsWhere欄位。

 

ServerModifyGetMax(伺服更新最大值)(bool)

可以配合Table自增值的欄位(Identify) 的取出,由於使用了Select MAX(key) From Table的方式,所以也無法100%保證取得User剛剛存檔的那一筆單據號碼。

 

TransIsolationLevel(隔離層次)(enum)

DataBase的隔離層次,預設為ReadCommitted,其他還有ReadUncommitted,Unspecified,Chaos,RepeatableRead,Serialzable,Snapshot,請參考資料庫的Isolation Level的說明。

 

WhereMode(Where模式)(enum)

Update/DeleteUpdateComp會自動產生where語法,此共有三種設定,如下:

使用主鍵:此為預設值,一般都是以主鍵做為where的條件。

主鍵與欄位屬性:除了主鍵外,須加上FieldAttrs的欄位屬性WhereMode中設定為True的的欄位。

全部:所有欄位都置於where中。

 

【事件】

BeforeApply(存檔前)不管是Insert/Delete/Update,都會在上述動作之前先執行存檔前這個事件。

 

AfterApply(存檔後)不管是Insert/Delete/Update,都會在存檔成功後執行這個事件。

BeforeInsert(新增前)Insert前所要執行事件。

AfterInsert(新增後)Insert後所要的執行的事件。

BeforeDelete(刪除前)Delete前所要執行的事件。

AfterDelete(刪除後)Delete後所要執行的事件。

BeforeModify(更改前)Update前所要執行的事件。

AfterModify(更改後)Update後所要執行的事件。

 

【功能函數】

本元件暫無功能函數。

 

【其他說明】

UpdateComp可以依欄位是否為UniCode自動設定N'Value'的方式寫入,整個UpdateComp全面支援UniCode的存取功能。


訊光科技系統股份有限公司

Converted from CHM to HTML with chm2web Pro 2.85 (unicode)