Appendix BClient端元件\CacheDataSet

CacheDataSet

 

 

【功能說明】

用途:使用於Client端,本元件繼承自InfoDataSet元件,用於將不常異動的數據快取到Client端來,以降低網路因經常存取這些數據所佔用的頻寬。同時可與InfoRefVal配合使用,可以提高效率。

 

【元件屬性】

Name(名稱)(string)

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

 

Active(啟動)(bool)

設定目前此CacheDataSet是否要啟動,也可通過設定此屬性的值來啟動/關閉此CacheDataSet。

 

CacheFile(文件名稱)(string)

此元件存放在本機的檔案名稱,檔案的路徑固定為EEPNetClient.exe下的Cache目錄。

 

CacheMode(同步模式)(enum)

Client端資料的同步機制。可選為:

All:如果主檔有異動,會自動下載所有的資料,如果資料量大可能會影響效率。

Smart:為避免下載所有資料的效率較低,可選擇此種方式,它會將Cache檔案的日期時間與Server上資料的日期時間比對,僅下載此日期後異動的資料。

None:不做同步資料。

 

 

LoadData(是否下載資料)(bool)

在第一次被Active的時候是否要下載數據到Client。

CacheDataSet有兩個用途,一個為基本檔案的快取功能,此用途在任一Client去Active時如果Client沒有資料,就必須LoadData下來;另一個用途就是離線的輸入,就是讓Client可以不必連線也可以輸入資料,此模式的LoadData就必須設為False,防止讓存在Server上的資料下載到Client端中造成速度上的浪費。

 

ReadOnly(唯讀)(bool)

是否為只讀模式,如果設成True,則資料將不允許更改,如果設成False,則可以讓User更改資料,並在連線的狀態下存回到Server端的數據庫中。

 

RemoteName(遠程InfoCommand)(string)

Server端的InfoCommand的名稱,此屬性不能為空。

 

ServerModify(隨伺服端更新)(bool)

用來控制Server對數據存檔後,如果Server端有字段再次變更,是否要通知並將Client端的數據更新。一般Server端的自動編號,賦值或計算某欄位值等功能會需要用到本屬性。

 

【事件】

DataFilled (資料填入時)

在CacheClientDataSet取得數據後觸發。

 

BeforeApplyUpdates(Eventarg e)

在 ApplyUpdate之前會被觸發。

 

AfterApplyUpdates(Eventarg e)

在 ApplyUpdate 成功時會被觸發。

 

ApplyError(Eventarg e)

此事件可以用來自行處理 Apply 的錯誤訊息,如可以在 Server 端的 UpdateComp 中,利用  throw 拋出自定的 Error Message ,再讓 ApplyError 接收

 

NextPacket(object sender, PacketEventArgs e)

此事件會在取得 Packet 所設筆數前後各處發一次 , 可以用 e.State 為 Before 或 After 來辨識是 NextPacket 之前還是之後。

 

【功能函數】

bool Apply(Bool isClearCache)

是否將Client端所更改的資料存檔到Server端的InfoCommand中,以便讓後端的資料更新,如果isClearCache為True,則在成功存檔後,同時對Cache檔案進行清除資料的動作,如果為False,則不會做清除(保留舊資料)。

 

bool ApplyUpdates()

將異動的資料存檔到後端對應的InfoCommand中,與Apply相似,等同isClearCache=False。

 

Save()

將此元件取得的數據存入對應的Cache檔案中。

【其他說明】

本元件繼承自InfoDatatSet,所以可以像InfoDataSet一樣使用,並具備InfoDataSet的所有功能。同時,在使用此元件時,資料表必須有以下3個系統欄位,分別為UPDATE_DATE(Varchar 8),UPDATE_TIME(Varchar 8)與UPDATE_STATE(Varchar 1),UPDATE_DATE與UPDATE_TIME存放資料異動時間,UPDATE_STATE則存放資料異動的模式,「I」為新增,「M」為更改,「D」為刪除。此三個字段的值,必須由開發者在資料異動時設定初值,系統不會自動產生。

 

 

Top of Page