请教怎么对TClientDataSet里的数据进行递归循环
请问如何对TClientDataSet里的数据进行递归循环?
我有一个ClientDataSet1,内有三字段(NO,NAME,BELONGNAME),其中NAME和BELONGNAME字段有所属关系,即树形关系,最顶级的记录中字段BELONGSITE为空.现需要根据一个NAME值,递归找出其下属的所有记录,请问在一个数据集内如何实现,有什么好办法?
目前我使用的是Filter以后递归,但速度不理想,还有需要说明一下,只能对这个数据集进行操作,而不能使用数据集查询的方式,因为数据量较大且执行较频繁.
------解决方案--------------------
个人不建议使用这种方法,你可以在设计数据库之处,保留一个冗余字段,用来存储记录的最顶级关联记录的id,这样你在大量数据筛选时,就会轻松很多
不是提倡字段冗余,而是要合理利用冗余
------解决方案--------------------
数据量一大,过滤就非常慢了,bdmh的冗余字段非常好。
------解决方案--------------------
采用树的邻接链表的方式,设计你的数据库
------解决方案--------------------
对,楼主走错方向了,应该是优化你的数据库而不是你的代码。
------解决方案--------------------
楼上各位的建议都很好,学习了。
我有一个ClientDataSet1,内有三字段(NO,NAME,BELONGNAME),其中NAME和BELONGNAME字段有所属关系,即树形关系,最顶级的记录中字段BELONGSITE为空.现需要根据一个NAME值,递归找出其下属的所有记录,请问在一个数据集内如何实现,有什么好办法?
目前我使用的是Filter以后递归,但速度不理想,还有需要说明一下,只能对这个数据集进行操作,而不能使用数据集查询的方式,因为数据量较大且执行较频繁.
------解决方案--------------------
个人不建议使用这种方法,你可以在设计数据库之处,保留一个冗余字段,用来存储记录的最顶级关联记录的id,这样你在大量数据筛选时,就会轻松很多
不是提倡字段冗余,而是要合理利用冗余
------解决方案--------------------
数据量一大,过滤就非常慢了,bdmh的冗余字段非常好。
------解决方案--------------------
采用树的邻接链表的方式,设计你的数据库
------解决方案--------------------
对,楼主走错方向了,应该是优化你的数据库而不是你的代码。
------解决方案--------------------
楼上各位的建议都很好,学习了。