gpt4 book ai didi

database - 如何防止 firedac 发布或取消详细记录?

转载 作者:搜寻专家 更新时间:2023-10-30 23:32:28 25 4
gpt4 key购买 nike

我有两个具有主从关系的 FDQuery。在“Master”的 AfterInsert 事件中,我做了一个详细的 Append,在事件 OnBeforePost(也是“master”的)中,我仅在验证“Master”字段后才调用“Detail”的“Post”。但是,我无法按此顺序执行此操作,因为如果 FireDac 在“详细信息”中没有任何更改,则会在“详细信息”中执行“取消”。如果有 Action ,它会自动执行“发布”。这发生在执行 BeforePost 事件之前,因为在该事件期间详细信息已经处于“dsBrowse”模式。谁能帮我解决这种情况? 即如何防止 firedac 在记录详细信息上执行发布/取消?*注意:我使用的是 Delphi XE5

最佳答案

解决方法是创建一个继承的 TFDQuery 组件并覆盖 PostBeforePost 事件,导致 BeforePost 事件在(不是太棒了?)发布。

type
TMyFDQuery = class(TFDQuery)
InheritedPost: boolean; // Avoid Duplicate BeforePost Execution
...
protected
procedure DoBeforePost; override;
procedure Post; override;
...

procedure TMyFDQuery.DoBeforePost;
begin
if not InheritedPost then
inherited;
end;

procedure TMyFDQuery.Post;
begin
DoBeforePost;
try
InheritedPost := True;
inherited;
finally
InheritedPost := False;
end;
end;

关于database - 如何防止 firedac 发布或取消详细记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47539662/

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