注册 登录
编程论坛 Delphi论坛

ClientDataSet里怎么向上向下移动数据行(急)

longrm 发布于 2007-11-27 18:20, 3955 次点击
请教下:

已经从数据库取出数据放到ClientDataSet里,并显示在dbGrid下,
然后想做一个向上/下移动功能,能够移动数据的(比如说把第5行记录移到第6行),应该怎么做?

[[italic] 本帖最后由 longrm 于 2007-11-27 18:21 编辑 [/italic]]
6 回复
#2
sky_yang_sky2007-11-28 11:44
moveby(x),x為要移動的變量
#3
longrm2007-11-29 09:50
moveby()只是移动光标,它显示的记录并不移动,,,,,,呃,这论坛真冷~~~
#4
xu20002007-11-29 10:51
楼上说的很对,MoveBy方法行不通。

我到是有个思路,就是查询的数据前加一个标号字段,并用该字段排序,如果想把某一行移动到指定位置,只要更改这个字段的序号就可以了。
#5
longrm2007-12-03 09:49
楼上的这个我试过了,确实可以但是假如中间插入一行数据的话后面所有数据都得改,这样数据一多保存时特别慢,超过3000行就报:"Out Of Memory"错误,有没有解决方法?
#6
water777312007-12-04 11:52
插入的时候,取前后两个序号值取平均,作为当前序号就可以了。要不就在保存后用SQL语句更新序号大于等于当前序号的记录(不包含当前记录)。
#7
longrm2007-12-05 09:28
取平均值,,,这个数据量很大的,如果插的很多的话,那这个小数位岂不是n多,,,能行么?

而且插入的位置都是不固定的,还要有向上向下移动的功能,啊啊 啊,我快死了,,,

谢谢楼上的解答了,再想想有什么好办法
1