3

大型数据集、数百万条记录需要特殊编程来保持 DBGrids 的速度。

我想知道是否有任何现成的 Delphi (DBGrids) 组件可以自动执行此操作?

编辑例如:某些数据库具有获取第一个 X 记录(例如 100 条记录)等功能。当我通过滚动到达底部时,我想自动获取下一个 100。相反,当我到达开头时,我想获取前 100 个。我知道我可以对此进行编程,但肯定可以将该功能传播到DBGrid 控制 DBGrid 进行缓冲的位置。它将节省相当多的编程时间 - 可以这么说,您只需设置“缓冲区大小”。

4

5 回答 5

4

您可能想看看精彩的(免费、开源、双重许可为 MPL 1.1 和 GPL,因此可用于闭源应用程序)Virtual TreeView及其用户提供的后代(向下滚动页面以找到它们。)

编辑以反映问题的编辑:Virtual TreeView 不仅允许您处理数百万个节点而不将它们保存在内存中,而且这实际上是使用它的首选方式。您可以在需要时通过事件回调提供数据,并且可以告诉树缓存该数据(或不缓存)。

哦,当然它还有一个网格/报告模式,它可以用作表格(只需将 GridExtensions 属性设置为 True。)

于 2008-10-14T15:21:54.767 回答
3

NextGrid 是 Delphi 的轻量级、快速且美观的网格

http://www.bergsoft.net/component/next-grid/features.htm

在不降低速度的情况下处理大量细胞

NextGrid 可以处理非常大量的单元格而不会降低速度。添加、修改和删除数据的速度不取决于单元格的数量。在 NextGrid 演示中,您可以看到 NextGrid 处理 100,000 行和 10 列 = 1,000,000 个单元格的速度有多快

于 2008-10-14T12:14:07.923 回答
3

我会看看Developer Express QuantumGrid Suite。(@birger:你只是快了一点;-))所以我不只是重复答案,而是进行一些阐述:

DevExpress Grid 使用具有多种模式的数据控制器来控制绑定到网格的数据。其中之一正是您正在寻找的:

网格模式

使用网格模式时,只会将固定数量的数据集记录加载到内存中。由于仅从数据集中检索到有限的记录集,因此在网格模式下禁用了自动排序、过滤和汇总计算(必须手动控制)。默认情况下,禁用此模式,ExpressDataController 会加载数据集中的所有记录。

它确实有一些缺点,看起来很明显:如果您手头没有所有记录,则无法进行汇总、排序或过滤。

于 2008-10-14T14:24:34.943 回答
2

我认为DevExpress Quantumgrid很好地支持了这一点。

于 2008-10-14T14:16:49.733 回答
1

抱歉,我刚看到你对 Neftalí 的评论

如果您每次要带 100 条记录,然后获取下 100 条,这项工作与数据库访问组件有关,请查看devart组件,它们提供对最常用数据库的直接访问组件,并且它们具有您所询问的功能和更多:

http://www.devart.com/products-vcl.html

于 2008-10-14T12:24:58.290 回答