【功能說明】
用途:使用於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」為刪除。此三個字段的值,必須由開發者在資料異動時設定初值,系統不會自動產生。