一个关于ClientDataSet的问题 我在程序中用了一个ClientDataSet,我通过循环对ClientDataSet.RecNo 赋值来对记录定位。不过在每次循环的时候要修改ClientDataSet的值。可是当下次定位的时候通过RecNo定位的记录就不正确了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ClientDataSet在没有对某个字段值进行排序的时候,这个RecNo就不是固定的,所以有两个办法来解决你的问题(任何一种都可以解决):1、用某一个主键来排序2、循环赋值的时候用遍历的方法,定位取值的时候用字段定位. 我也试过了排序,好像也不行。主要是我在赋值的时候不知道记录的关键字。我只能通过RecNo来定位,而现在每次更新后记录的顺序就变了。 用了也不管用。我简单说一下实际的应用:我用StringGrid 来显示ClientDataSet中的数据。Procedure RefGrid();var i,j:Integer;beginfor i:=0 to StringGrid.RowCount -1 do for j:= 0 to StringGrid.ColCount -1 do DrawGrid(nil,i,j);end;DrawGrid 中,我通过i,j计算得到当前grid的index,然后我通过对ClientDataSet.RecNo = Index +1;//来定位数据.....//并显示数据;起初不对ClientDataSet的数据作修改时,数据显示的都正确。可是在ClientDataSet.RecNo = Index +1;//来定位数据ClientDataSet.Edit;CliendDataSet.FieldByName('XX').Asvlue :=1;CliendDataSet.Post;.....//并显示数据;这个时候每调用RefGrid(),显示的数据就对不上了;例如原来grid上显示 : 1 2 3 4 5 6 7 8 9 10 11 . ......现在点击一次就变成: 2 3 4 5 6 7 8 9 10 11 1 再点就变成: 3 4 5 6 7 8 9 10 11 12 ......... 1 2好郁闷。后来我就改用其他方法保存要修改的数据了。而不修改ClientDataSet的数据,每次调用就没问题了。 求Delphi开发收发邮件源码 循环时, 窗口有僵死状态 , 怎么解决 ? 谁能帮我看看哪里错了,编译不出来,这里是部分代码 如何用BDE连接MSAccess? 请问分辨率问题 请问哪里有正式版的ehlib下载? TButton的渐变背景图 各位大峡,用delphi做一个基于asp的打印报表组件如何实现呢?大家给点意见。 如何在程序启动时中止程序? 关于动态连接库的调用问题 在线诚等,求一问题的解决方法! 请问应该怎么终止一个线程啊?^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!!!
1、用某一个主键来排序
2、循环赋值的时候用遍历的方法,定位取值的时候用字段定位.
主要是我在赋值的时候不知道记录的关键字。
我只能通过RecNo来定位,而现在每次更新后记录的顺序就变了。
我简单说一下实际的应用:
我用StringGrid 来显示ClientDataSet中的数据。Procedure RefGrid();
var
i,j:Integer;
begin
for i:=0 to StringGrid.RowCount -1 do
for j:= 0 to StringGrid.ColCount -1 do
DrawGrid(nil,i,j);
end;DrawGrid 中,我通过i,j计算得到当前grid的index,然后我通过对
ClientDataSet.RecNo = Index +1;//来定位数据
.....//并显示数据;起初不对ClientDataSet的数据作修改时,数据显示的都正确。
可是在
ClientDataSet.RecNo = Index +1;//来定位数据
ClientDataSet.Edit;
CliendDataSet.FieldByName('XX').Asvlue :=1;
CliendDataSet.Post;.....//并显示数据;这个时候每调用RefGrid(),显示的数据就对不上了;例如原来grid上显示 : 1 2 3 4 5
6 7 8 9 10
11 . ......现在点击一次就变成: 2 3 4 5 6
7 8 9 10 11
1 再点就变成: 3 4 5 6 7
8 9 10 11 12
......... 1 2
好郁闷。后来我就改用其他方法保存要修改的数据了。而不修改ClientDataSet的数据,每次调用就没问题了。