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有兩個用途,一個為基本檔案的快取功能,此用途在任一ClientActive時如果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中,以便讓後端的資料更新,如果isClearCacheTrue,則在成功存檔後,同時對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_DATEUPDATE_TIME存放資料異動時間,UPDATE_STATE則存放資料異動的模式,「I」為新增,「M」為更改,「D」為刪除。此三個字段的值,必須由開發者在資料異動時設定初值,系統不會自動產生。

 

 

Top of Page