今日有需求,先从数据库查询结果集,然后缓存到ClientDataSet中,断开结果集,继续操作缓存的CDS。不过却遇到了field 'RNo' cannot be modified错误,谷歌多次,依然未找到直接解决办法。不过一些文章给予我一些思路,现问题解决,附下:
//修改所有字段为可编辑。表中实际不存在的虚拟列,默认不允许编辑
for i := 0 to CDS.Fields.Count - 1 do
begin
if not CDS.Fields[i].CanModify then
CDS.Fields[i].ReadOnly := False;
end;
首先,谷歌几次,发现遇到同样问题的本来就不多,解决办法更是没有。不过在浏览过程中,看到有网友使用了FieldByName('XXX').CanModify,但是是只读的。于是便想到是否可以更改只读属性?继续谷歌,看到国外友人有用到Fields.ReadOnly,然后测试,问题解决