clientDataSet1.Edit;
clientDataSet1.FieldByName('f1').AsString := 'XXXXX';
clientDataSet1.Post;
假设clientDataSet1里面装载的内容为这样“select f1 from table1”就没错,sql语句换成“select mid(f1,1,4)+'年'+mid(f1,5,2)+'月' from table1”就会报错“field f1 can not be modified...”,唉,费解!

解决方案 »

  1.   

    使用后者语句,本身的结果集是不可以更新的,如要更新必须重新建clientdataset,再用Update语句.
      

  2.   

    “select mid(f1,1,4)+'年'+mid(f1,5,2)+'月' from table1”的结果集不能更新。如果你只是想把f1的显示做些修改,建议在ClientDataSet中加入字段,然后通过OnGetData和OnSetData来做转换,例如把true和false转为是和否。还可以自己手动处理clientDataSet1.FieldByName('f1').AsString := 'XXXXX',把XXXXX先解析成数据库能接收的内容。