我们有一个系统可以根据我们的数据创建报告。我们可以处理很多数据。超过15万行的想法并不是不可能的。
不幸的是,我们使用TClientDataSet的经验是它的局限性,因为当数据变得太大时,它常常导致“内存不足”的错误。
因此,问题是:是否存在一个通用的TDataSet实现,可以处理大量数据(例如直接流到文件,而不将整个数据集保存在内存中)?
我愿意亲自实施这样一个课程。但据我所知,在将数据保存到文件/流之前,它需要能够包含数据本身。此外,再次加载数据也应该可以作为流,而不是加载到整个TClientDataSet对象中,因为这样我们就无法解决这个问题。
发布于 2013-11-04 13:32:35
您可以在FireBird中使用嵌入式模式或Interbase。
发布于 2013-11-04 15:35:46
在报告之前,是否真的需要缓存客户端上的所有数据?如果不是,也许可以重新考虑如何查询和处理数据来生成这些报告,看看是否有一种方法可以减少客户端数据(这会带来更少的通过网络传输的数据)。
如果您以前曾经走过这条路,并且确实需要所有这些数据客户端,那么您可以查看自定义数据结构。记录的TList<T> (即使您需要构建自己的索引)比TClientDataSet占用的内存少得多。
发布于 2013-11-04 16:32:35
KBMMemTable是TClientDataset的一个很好的替代方案
http://www.components4programmers.com/products/kbmmemtable/
我们已经用了很多年了,它非常有用,而且速度很快。
https://stackoverflow.com/questions/19768078
复制相似问题