gpt4 book ai didi

delphi - TFDTable 中的降序排序会导致重复行

转载 作者:行者123 更新时间:2023-12-03 15:32:10 25 4
gpt4 key购买 nike

在 LDW 模式下使用 TFDTable 时,字段降序排序会导致重复行。例如:

TFDTable.TableName is set to a VIEW name (not a tablename)

TFDTable.UpdateOptions.KeyFields is set to the primary key in the VIEW base table.

TFDTable.IndexFieldNames is set to 'PERS_NAME:A'.

显示正确的结果集,没有任何重复项。如果我将 IndexFieldnames 更改为“PERS_NAME:D”,则 View 返回的每条记录都会显示两次或三次。

如何避免这些重复?仅当按降序对表进行排序时才会发生这种情况,无论我使用哪个字段进行排序。

更新:您可以在github上找到一个示例项目来重现该问题:https://github.com/cytrinox/firedac-sort-issue或通过https://github.com/cytrinox/firedac-sort-issue/archive/master.zip下载项目

最佳答案

这个问题将持续存在,直到我们找到在 LDW 模式下处理 TFDTable 的其他方法。

Definition of LDW - XE6

如果您不遵守规则,则将 LDW 与基于数字(即整数)以外的任何内容的索引一起使用将会给您带来各种问题。

我也花了几个小时试图让 LDW 处理索引的 VARCHAR 字段 - 但是让我的 SQL 语句使用 COLLATE (或直接整理字段的字符集)会使我的应用程序毫无用处。这意味着它会因您描述的相同错误而崩溃。

这是 FireDAC 作者向我提供的信息。

There are 1001 way to make LDW failing due to concept. There is no sense and no ability to make client side sorting to be synchronized with server side sorting collation in all cases. IOW, when you are sorting TFDTable on a string field, it may fail in more cases when anyone can imagine. Two ways:

  • 您正在了解发生这种情况的原因,并尝试调整 FireDAC 客户端排序,如所述。我无法提供所有选项 - 太多了。
  • 您不明白 - 那么最好不要在字符串列上对 TFDTable 进行排序,甚至不要使用 TFDTable。

你上面的段落 当您被允许使用 TFDTable 时可以考虑作为契约(Contract) 当没有时。

就我个人而言,我希望看到 LDW 无需内部排序即可运行。如果我们可以禁用排序并让它处理数据分页 -那就太好了。

编辑:

想一想 - 尝试使用 TFDQuery 代替 TFDTable。 TFDQuery 不支持 LDW,那么您就可以开始了。

希望这对您有帮助。

关于delphi - TFDTable 中的降序排序会导致重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27636124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com