delphi - FireDAC 应用更新而不清除 Delta

标签 delphi firedac delphi-10.4-sydney

是否可以在缓存更新模式下对 FireDAC 查询调用 Applyupdates 而无需清除其 Delta?

这样做的原因是因为我有 4 个 FDQuery,我想将它们保存在一起,或者在其中任何一个发生错误时一起取消。如果发生任何问题,我可以使用单个事务来回滚所有更改,但这将使每个 FDQuery 的 Delta 为空,其中其 ApplyUpdates 成功。

因此,我想调用某种不会清除增量的ApplyUpdates,并且只有当所有FDQuerysApplyUpdates都成功时,我才会提交事务并在每个FDQuery上调用CommitUpdates以清除其增量。但是,如果其中之一失败,每个 FDQuery 的更改仍将保留在其 Delta 中,因此我回滚事务,用户仍然可以修复数据并尝试再次保存它们。

更新:正如 @Brian 所评论的,将属性 UpdateOptions.AutoCommitUpdates 设置为 False 可以解决问题,并且不会清除 Delta。

最佳答案

UpdateOptions.AutoCommitUpdates 设置为 false 将在调用 ApplyUpdates 时保留增量。然而,当前缺乏 AutoCommitUpdates 的帮助,并且以令人困惑的方式错误地描述了 False 设置。它应该更像是:

AutoCommitUpdates controls the automatic committing of cached updates.

Specifies whether the automatic committing of updates is enabled or disabled.

  • If AutoCommitUpdates is True, then all the successfully updated records applied by the call to ApplyUpdates are automatically marked as unchanged. You do not need to explicitly call CommitUpdates.
  • If AutoCommitUpdates is False, then your application must explicitly call CommitUpdates to mark all changed records as unchanged.

我提交了一张票来修复帮助:RSP-31141

关于delphi - FireDAC 应用更新而不清除 Delta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64102757/

相关文章:

delphi - SQLite 或 Blackfish - 我应该在 delphi 应用程序中使用什么?

ms-access - FireDAC ExecSQL with Params, C++ (or escape GUID braces)

android - 无法使用 Delphi 10.4 在 Android 中加载 sqlite 库

delphi - FireDAC:阵列 DML 进展

delphi - 如果 Wrapmode 设置为 "Fit",则获取 TImage 中位图的新宽度和高度

delphi - WriteBinaryStream 压缩为INI 文件?

delphi - 创建和/或写入文件

delphi - FreePascal 中 Max 函数的意外结果

algorithm - Delphi,评估公式字符串