有关操作ClientDataSet的问题,请大家帮忙;

dolphin2001 2006-08-29 10:01:25
请教大家一个问题: 我有一个功能,使用一个ClientDataSet获取了一个外部一个DataSet的Data之后,外部的DataSet关闭了,我现在需要去针对这个ClientDataSet进行一个操作,操作步骤是:先通过主键字段去查找对应的记录是否存在,如果存在则先删除对应的记录,然后在这个ClientDataSet的开头插入记录;(插入的记录总是在第一条)

比如现在的记录如下:

插入之前的数据情况:
CODE NAME
001 张三
005 王五
002 李四

我现在操作一条记录: 003 王五

需要达到的插入之后的效果:
CODE NAME
005 王五
001 张三
002 李四


我现在的处理方式时:

if (AClientDataSet.Locate(KeyFieldName,KeyFieldValue,[]) then
AClientDataSet.Delete;
AClientDataSet.First;
AClientDataSet.Insert;
.....对AClientDataSet的字段进行赋值
AClientDataSet.Post;

但是实际的效果却是:
CODE NAME
001 张三
005 王五
002 李四
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoveFirst 2006-08-29
  • 打赏
  • 举报
回复
那就加个自增长的Id,或者时间的字段,然后按他们倒序排列就可以了阿。
dolphin2001 2006-08-29
  • 打赏
  • 举报
回复
我不是需要按某个字段排序的效果;我要实现的效果;类似于windows的记录历史操作;最近操作的目录总是在最上面的;
zhanghua0020 2006-08-29
  • 打赏
  • 举报
回复
用两个ClientDataSet控件,一个用于排序,一个可以保存,虽然感觉代码可能很冗余,但是可以实现你想要的功能的。
MoveFirst 2006-08-29
  • 打赏
  • 举报
回复
那也可以设置ClientDataSet的索引字段阿
dolphin2001 2006-08-29
  • 打赏
  • 举报
回复
我的操作的时候,已经断开了数据库的连接,都是在本地操作的;
MoveFirst 2006-08-29
  • 打赏
  • 举报
回复
那你就按code排序。
dolphin2001 2006-08-29
  • 打赏
  • 举报
回复
试过了,不行;
MoveFirst 2006-08-29
  • 打赏
  • 举报
回复
AClientDataSet.First;
AClientDataSet.Prior;
AClientDataSet.Insert;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧