记录集(RecordSet)新增客户端默认值特性

来源:互联网 发布:英文介绍淘宝网 编辑:程序博客网 时间:2024/05/01 06:12

客户端界面绑定一数据集(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;

原创粉丝点击