delphi 保存点在提交后不还原更改

g2ieeal7  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(173)

我尝试使用保存点将某些数据还原到以前的状态,但在我发布后,保存点似乎不再工作。

var mem := TFDMemTable.Create(Self);
with mem.FieldDefs.AddFieldDef do
begin
   Name := 'name';
   DataType := ftString;
   Size := 50;
end;
mem.Open;
mem.Append;
mem.FieldByName('name').AsString := 'Test';
mem.Post;
ShowMessage(mem.FieldByName('name').AsString); // Prints Test
var SVPoint := mem.SavePoint;
mem.Edit;
mem.FieldByName('name').AsString := 'Test2';
mem.Post;
ShowMessage(mem.FieldByName('name').AsString); // Prints Test2
mem.SavePoint := SVPoint;
ShowMessage(mem.FieldByName('name').AsString); // Still prints Test2

即使我在打开MemTable之前添加了mem.CachedUpdates := True,问题仍然存在。
删除Post似乎解决了这个问题。但这是否意味着我无法发布保存点的数据?如果能解释如何正确使用它们,我将非常欢迎。

lzfw57am

lzfw57am1#

SavePoint只能在CachedUpdates模式下使用。
我没有看到您将CachedUpdates设置为True。
在您的第一个Post之后,您必须呼叫

mem.CommitUpdates;

现在,您的SavePoint可以正常工作了。
如需详细信息,请参阅Emd. DocWiki

相关问题