記錄集(RecordSet)新增客戶端默認值特性

客戶端界面綁定一數據集(FF_ClientRecordSet),在編輯一條新記錄時,需要按照業務規則顯示默認值。由於新記錄不是從後臺數據庫返回的,而是客戶端通過調用FF_ClientRecordSet::Append()添加的,因此不能利用數據庫的默認值特性。
前臺新記錄默認各字段爲NULL,若要爲字段賦予初始值,有3種方法。
1)通過宿主代碼訪問FF_ClientRecordSet類修改新記錄的值
 該方法需要修改宿主代碼,而且字段名等都是跟業務相關的,因此修改後的代碼也是與業務相關的,不具備通用性。在客戶化模塊中使用該方法是合理的。
2)通過腳本訪問FF_ClientRecordSet類修改新記錄的值
 開發平臺暫時沒有開放FF_ClientRecordSet類的各種訪問接口
3)支持客戶端數據集的默認值(CDefault)特性,類似數據庫的默認值,當在客戶端新增記錄時,給具有默認值的字段賦予初始值。
 例如:
 <Field Name="編碼類型" Code="tb_gdsn_jjy_extern_attr.goodsTypeID" Type="Int" CDefault="1"/>
 該示例說明:編碼類型字段的客戶端默認值爲1.當客戶端調用FF_ClientRecordSet::Append方法新增記錄,新記錄的編碼類型字段值初始爲1。
 CDefault屬性是Client Default的縮寫,意爲客戶端默認值。之所以區分客戶端默認值,是因爲考慮到未來可能擴展到服務器默認值,因此提前增加區分標誌便於日後系統升級。

實現細節:
 FF_ClientRecordSet通過vcl的TClientDataSet實現,其字段基類TField的DefaultExpression屬性可以設置默認值。
 以下爲DefaultExpression屬性的說明:
 Set DefaultExpression to provide a default value for a field. DefaultExpression can be any valid SQL value expression that does not refer to field values. If the expression contains literals other than numeric values, they must appear in quotes.
 注意:
  通過以下方式設置字段,將不能設置字段的部分屬性,
  ClientDataSet1->FieldDefs->Add("OrderNo",ftFloat);
  正確的方式是new一個TField的子類,如TFloatField,然後添加到記錄集中,代碼如下:
  TFloatField* Field = new TFloatField(NULL);
  Field->FieldName = "編碼類型";
    Field->DefaultExpression = "1";
    Field->DataSet = ClientDataSet;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章