我现查询一个结果放在TClientdataset里面
select '' "项目",
       '' "星期日",
       '' "星期一",
       '' "星期二",
       '' "星期三",
       '' "星期四",
       '' "星期五",
       '' "星期六"
  from dual
然后我再赋值
CDS.FieldByName('星期日').AsString := detail;
但是detail内容过长,导致在DBGridEh里面显示不全,
看了下,感觉是TClientdataset Size问题,
然后我更改size:
CDS.FieldByName('星期日').Size := length(detail);
但是报错,
cannot perform this operation on an open dataset

解决方案 »

  1.   

    cannot perform this operation on an open dataset
    指你的数据集未打开,示处于Active状态,未进行clientdataset.open操作
    长度不够,你要存什么内容到 “星期日”中?是不是太长了,超过字符串的容量了
      

  2.   

    你这个CDS字段应该是固定写好的还是用语句动态生成的?可以直接编辑字段修改长度啊,或修改生成字段的语句。
      

  3.   

    问题出在select语句中''上,TClientdataset获得的“星期日”字段的长度为4(4是在不知字段长度的情况下,缺省分配的长度,4个字符长度,没记错的话)。你可以这样,把''扩展到足够长:
    select '        ' "项目",
       '      ' "星期日",
       '      ' "星期一",
       '      ' "星期二",
       '      ' "星期三",
       '      ' "星期四",
       '      ' "星期五",
       '      ' "星期六"
       from dual;