有一个查询结果集 丢给了 ClientDataSet1   sql 里包含 (case ORD_FLAG'
    +'   when ''0'' then ''未发订'''
    +'   when ''1'' then ''已发订'' end) as ORD_FLAG ,现在想 修改 某条记录的字段  ORD_FLAG 
          Edit ;
          FieldValues['ORD_FLAG']:='已发订';
          Post ;
报错 field 'ORD_FLAG' cannot be modified  
是不是 as 重命名的字段 不能修改 

解决方案 »

  1.   

    是的,不能修改,你可以自己写个update或者在你的数据集打开里面,加上原有的字段让他隐藏这样可以修改源有的字段,比如:ORD_FLAG,(case ORD_FLAG'
        +'   when ''0'' then ''未发订'''
        +'   when ''1'' then ''已发订'' end) as FLAG
      

  2.   

    case when 字段是唯读的
    可以这样:A,case ... when ... end as BA可以修改; B是唯读的不能修改,只作显示用
    但修改A后,并不会反映到B中,要重新Open; 或者可以考虑使用CalcField字段
      

  3.   

    我的本意是  修改ord_flag  0 为1 后 更新下  ClientDataSet1 里的 显示 不用再重新open看了 只能是重新open了  
      

  4.   

    使用计算字段,计算字段类型应该是个字符值就是你要显示的值,数值对应的就是你的ord_flag,在oncalcfields中处理。