回 帖 发 新 帖 刷新版面

主题:关于TClientDataSet的一个问题,看联机帮助很久也没找到方法!

要实现的功能:
    从数据库中读取一部分数据,然后为ClientDataSet增加新的字段(Field).将这个ClientDataSet作为一个内存表进行操作.
目前的实现方法:
    从数据库中读取数据:拉一个ClientDataSet的控件,然后为其增加ADOConnect,ADOQuery,DataSetProvider.通过设定Provider的poAllowCommandText,以及CDS的CommandText来从数据库中取数据
    增加新字段:方法一.在上一步中就预先读取出所需字段,然后为其一一赋值.
               方法二.增加新字段.field.Add().--没成功,不知道为什么,帮忙解决.
    作为内存表操作:通过FieldByName() := ***.来进行数据的修改.
                   也没成功,已经将ReadOnly设置成False,切执行过Edit.但仍让告诉我CDS不在Insert/Modify状态.CanModify属性是一个只读属性,无法设置.

     哪位大侠能帮我解决一下啊?尤其是作为内存表操作部分!我实在是没什么好办法了.联机帮助我都看烦了.
  

回复列表 (共4个回复)

沙发

任何DataSet在Open这后就不能更改字段结构了。不知道你改结构的意图何在,如果要进行字段间运算,在DataSet控件中使用计算字段即可,效果非常好,但只能在同记录中进行运算,夸记录在多数情况下不行。计算字段应在Open之前设置好。如果作内存表用,数据只能用代码写入,无法从数据库中检索,也很难写回到数据中,一般仅作界面显示用。

板凳

是这样的,数据库中有8个字段,而我还要再添加4个字段.后来才知道一旦OPEN了,就啥都不能干,只能看了...

我采取的办法,从QUERY中读取数据,然后再逐条逐字段的赋给ClientDataSet.

然后剩下四个字段自己随便怎么操作都可以了...

谢谢楼上的.

3 楼

这个控件在那里有使用方法
我想用它来浏览数据,上一条,下一条,到头 到尾 都是怎么处理的

4 楼

Next : Moves to the next record in the dataset.
Prior : Moves to the previous record in the dataset.
First : Moves to the first record in the dataset.
Last : Moves to the last record in the dataset.

//用NEXT的时候用下面的来测试是否最后一条
EOF : Tests whether the file position is at the end of a file.
While not EOF do
begin
  //你的代码
  NEXT;
end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册