请问如何对TClientDataSet里的数据进行递归循环?

兵兵 2010-03-22 04:59:32
我有一个ClientDataSet1,内有三字段(NO,NAME,BELONGNAME),其中NAME和BELONGNAME字段有所属关系,即树形关系,最顶级的记录中字段BELONGSITE为空.现需要根据一个NAME值,递归找出其下属的所有记录,请问在一个数据集内如何实现,有什么好办法?
目前我使用的是Filter以后递归,但速度不理想,还有需要说明一下,只能对这个数据集进行操作,而不能使用数据集查询的方式,因为数据量较大且执行较频繁.
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
linghengmao 2010-03-23
  • 打赏
  • 举报
回复
楼上各位的建议都很好,学习了。
SQLDebug_Fan 2010-03-22
  • 打赏
  • 举报
回复
对,楼主走错方向了,应该是优化你的数据库而不是你的代码。
曼尼叔叔 2010-03-22
  • 打赏
  • 举报
回复
采用树的邻接链表的方式,设计你的数据库
SQLDebug_Fan 2010-03-22
  • 打赏
  • 举报
回复
数据量一大,过滤就非常慢了,bdmh的冗余字段非常好。
bdmh 2010-03-22
  • 打赏
  • 举报
回复
个人不建议使用这种方法,你可以在设计数据库之处,保留一个冗余字段,用来存储记录的最顶级关联记录的id,这样你在大量数据筛选时,就会轻松很多

不是提倡字段冗余,而是要合理利用冗余

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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