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

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

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

有帮助吗?

解决方案

我想看看 Developer Express QuantumGrid Suite 。 (@birger:你的答案更快;-))所以我不只是重复答案,一些阐述:

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

  

网格模式

     

使用网格模式时,只有固定的   加载了数据集记录的数量   进入记忆。因为只有一个限制   从中检索记录集   数据集,自动排序,过滤   和摘要计算被禁用   在网格模式下(必须控制   手动而不是)。默认情况下,这个   模式被禁用和   ExpressDataController加载所有   记录在数据集中。

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

其他提示

你可能想看看精彩的(免费的,开源的,双重许可的MPL 1.1和GPL因此可用于闭源应用程序) Virtual TreeView 及其用户提供的后代(向下滚动页面以查找这些内容。)

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

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

NextGrid是Delphi的轻巧,快速和漂亮的网格

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

  

处理大量没有放松速度的细胞

     

NextGrid可以处理非常大的数量   不失速度的细胞速度   添加,修改和删除数据   不依赖于细胞的数量。   在NextGrid演示中,您可以看到速度有多快   NextGrid使用100,000行和10行   列= 1,000,000个单元格

我认为 DevExpress Quantumgrid 非常有用。

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

如果你每次要带100条记录,然后获取下一条100,这项工作与数据库访问组件有关,看看 devart 组件,它们提供直接访问组件到最常用的数据库,他们有你要问的功能和更多:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top