代码之家  ›  专栏  ›  技术社区  ›  Johan Bresler

是否有一个DBGrid组件可以快速处理大型数据集?

  •  2
  • Johan Bresler  · 技术社区  · 17 年前

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

    我想知道是否有现成的Delphi(DBgrids)组件可以自动完成这项工作?

    例如,编辑:一些数据库具有诸如获取第一个X记录(例如100个记录)等功能。当我滚动到底部时,我想自动取下100个。相反,当我到达起点时,我想取前100个。我知道我可以对此进行编程,但确实可以将该特性传播到dbgrid控件,dbgrid在其中进行缓冲。这将节省大量的编程——可以说,您只需设置“缓冲区大小”。

    5 回复  |  直到 17 年前
        1
  •  3
  •   Ralph M. Rickenbach    17 年前

    我想看看 Developer Express QuantumGrid Suite . (@birger:You just a tick faster;-)所以我不仅仅是重复答案,还有一些阐述:

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

    网格模式

    当使用网格模式时,只有一个固定的 加载的数据集记录数 成为记忆。因为只有有限的 从中检索记录集 数据集,自动排序,筛选 并且禁用摘要计算 在网格模式下(必须控制 而是手动操作)。默认情况下, 模式被禁用,并且 ExpressDataController加载所有 数据集中的记录。

    它确实有一些缺点,这似乎很明显:如果手头没有所有记录,就不能进行摘要、排序或筛选。

        2
  •  4
  •   Mihai Limbășan    17 年前

    您可能想看看这个奇妙的(免费的、开源的、双许可的MPL 1.1和GPL,因此可以在封闭源代码应用程序中使用) Virtual TreeView 及其用户提供的后代(向下滚动页面以查找这些后代)。

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

    当然,它也有一个网格/报告模式,在这里它可以作为一个表工作(只需将GridExtensions属性设置为true)。

        3
  •  2
  •   Mohammed Nasman    17 年前

    下一个网格是轻快漂亮的Delphi网格

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

    处理大量电池而不降低速度

    nextgrid可以处理大量 不减速的电池。速度 添加、修改和删除数据 不依赖于细胞的数量。 在NextGrid演示中,您可以看到速度有多快 下一个网格使用100000行和10行 列=1000000个单元格

        4
  •  2
  •   Birger    17 年前

    我认为 DevExpress Quantumgrid 非常支持这一点。

        5
  •  0
  •   Mohammed Nasman    17 年前

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

    如果您想每次带100条记录,然后取下100条,这项工作与数据库访问组件有关,请看 德瓦特 组件,它们提供了对大多数使用过的数据库的直接访问组件,并且它们具有您需要的功能以及更多:

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