FireDac轮询按需记录并在StringGrid中显示它们

时间:2016-01-26 19:11:50

标签: delphi firedac

我正在使用Delphi 10 Seattle,FireDac,Oracle数据库和TMS组件。

我正在寻找一种方法,允许我从我的数据集/查询中加载数据,并根据需要将其放在StringGrid上。我认为正确的表达方式是paging

当我有大量的记录(5000+)时,我的应用程序冻结(~5s),直到它将所有这些记录加载到网格中。

我已经阅读了Embarcadero关于Fetching Rows的wiki帖子,但我在那里找不到解决方案。

我尝试了TFDQuery FetchOptionsResourceOptions的不同组合,但没有运气。

我注意到Oracle的SQLDeveloper完全按照我希望我的应用程序行为的方式执行。

我已经记录了这个短片,以演示SQLDeveloper如何加载大量记录: https://gfycat.com/BlankOrganicIndianpalmsquirrel

首先加载50条记录,当我滚动网格时,其他记录会被加载。

所以问题是如何获得与SQLDeveloper相同的轮询技术。 谢谢!

编辑:正在使用LiveBindings。切换到支持db的组件,它现在看起来像闪电一样快。

1 个答案:

答案 0 :(得分:2)

正如评论中所提到的,我通过从LiveBindings切换到DB-aware组件DBGrid获得了巨大的性能提升。

为了平滑滚动我使用了这个SO答案: Delphi dbgrid continuous scrolling