我尝试使用保存点将某些数据还原到以前的状态,但在我发布后,保存点似乎不再工作。
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
似乎解决了这个问题。但这是否意味着我无法发布保存点的数据?如果能解释如何正确使用它们,我将非常欢迎。
1条答案
按热度按时间lzfw57am1#
SavePoint
只能在CachedUpdates
模式下使用。我没有看到您将
CachedUpdates
设置为True。在您的第一个
Post
之后,您必须呼叫现在,您的
SavePoint
可以正常工作了。如需详细信息,请参阅Emd. DocWiki。