TClientDataset编辑具有100k +条记录的表

时间:2019-07-03 19:56:45

标签: sql-server delphi firedac tclientdataset tdbgrid

客户希望构建一个类似于工作表的应用程序,以显示数据库中的数据(大概在TDbGrid或类似的数据库上),从而允许像在工作表中一样免费搜索和编辑所有单元格。底层表格将有超过10万行。

使用TClientDataset的问题在于,它倾向于将所有数据加载到内存中,这违反了用户要求,这是这些3:

  1. 用户随时可以使用滚动条,键盘或搜索过滤器从第一条记录导航到最后一条记录(请注意,如果您转到最后一条记录,则TClientDataset将加载所有记录,AFAIK ...)。

  2. 连接将通过外部VPN / Internet连接(可能很慢),因此,仅加载屏幕上的实际可见记录。 从来没有

  3. 版本必须保存在事务中,以便可以在最后提交或回滚它们,并在必要时进行协调。

是否可以使用TClientDataset完成这3点? 如果没有,那还有什么选择?

1 个答案:

答案 0 :(得分:1)

我只是在最后一行中回答其他问题,我可以添加一些建议:

1-您可以使用一些创造力,提供分页和获取功能,比如说,使用一个在UI中配备了不错的进度条的线程,每页100行。在这种方法中,您必须通过一些智能查询来管理搜索和过滤器,有时还要重新加载数据,等等。

2-使用为此目的而优化的第三方组件,例如SDAC + EhLib Dbgrid。 SDAC是一个数据集,可用于缓存更新,EhDBGrid内有一个MemTable组件,功能非常强大,可以很好地进行免费搜索,模糊匹配或近似搜索,还可以还原,撤消和重做等。