在Delphi想使用三層架構或者使用TClientDataSet控件,一般都需要引用TDataSetProvider控件,現對TDataSetProvider控件的Options屬性值做一個簡單的分析。
1. poFetchBlobsOnDemand:
若包含此項,則表示數據包中不包括BLOB字段。不過,如果客戶端的TClientDataSet控件的FetchOnDemand屬性設為True,那么客戶端還是能自動地請求這些數據值;否則,客戶端應用程序必須使用客戶數據集的FetchBlobs方法來檢索BOLB數據。
2. poFetchDetailsOnDemand:
當用嵌套表的方式處理Master/Detail關系時,這里的Provider表示主 /明細表中的主表。若包含此項,則Detail表中的字段將不會放入包中。不過,如果客戶端的TclientDataSet控件的FetchOnDemand屬性為True;那么客戶端還是能自動的請求這些數據;否則,要顯式調用FetchDetails方法。
3. poIncFieldProps:
若包含此項,則表示數據包中將包含下列字段屬性:Alignment、MinValue、DisplayLabel、DisplayWidth、Visible、DidplayFormat、MaxValue、EditFormat、Currency、EditMask、DisplayValues等。
4. poCascadeDeletes:
當用嵌套表的方式處理Master/Detail關系時,這里的Provider表示主/明細表中的主表。若包含此項,則當主表中的記錄被刪除時,明細表中相應的記錄將自動地被刪除。
注意:要使用這個選項,數據庫服務器需要建立參照完整性:也就是,在數據庫中對主細表建立主外鍵關系,並在 “關系”頁選中“級聯更新相關字段”、“級聯刪除相關記錄”。
5. poCascadeUpdates:
當用嵌套表的方式處理Master/Detail關系時,這里的Provider表示主/明細表中的主表。若包含此項,則當主表中主鍵字段的值改變時,明細表中相應的記錄將自動地被更新。
注意:要使用這個選項,數據庫服務器需要建立參照完整性。參照4。
6. poReadOnly:
若包含此項,則表示不允許客戶端數據集向Provider申請更新數據。
7. poAllowMultiRecordUpdates:
表示一個單一的更新將同時更新關聯的許多表的記錄,這有可能是通過觸發、參照完整性或自定義的SQL語句來實現的。
8. poDisableEdits:
若包含此項,則表示不允許客戶端更新已經存在的數據值,否則,將觸發異常。
9. poDisableInserts:
若包含此項,則表示不允許客戶端插入一個新的記錄,否則,將觸發異常。
10. poNoReset:
若包含此項,則表示在提供數據前,不允許客戶端將光標指定在第一條記錄。
11. poAutoRefresh:
若包含此項,則表示Provider將用當前的記錄刷新客戶端的數據集,而不管它是否已經申請更新。(這個功能好像並沒有實現)
12. poPropogateChanges:
若包含此項,則表示服務器對記錄的更新將返回給客戶端並反映到客戶端數據集中。
13. poAllowCommandText:
若包含此項,則表示客戶端可以重載相關數據集的SQL語句、表的名字或存儲過程。