用作内存数据集的TClientDataSet - 是否可以在不将数据保存到数据库的情况下在内存中应用更新?

cos*_*sta 4 delphi tclientdataset dbexpress

默认情况下,TClientDataSet会跟踪DataSet中所做的所有更改(插入,更新,删除).有没有办法告诉数据集接受当前的更改(在使用插入/发布的一系列插入之后,让我们说)而不实际调用数据库来保存任何东西?

我想到的一个想法是使用TDataSetProvider并实现BeforeUpdateRecord事件并将Applied参数设置为true.我不喜欢这件事.我必须再添加两个对象(TDataSetProvider和TSQLQuery对象),ApplyUpdates启动一个事务.有更简单的方法吗?

如果我没有在TClientDataSet上设置ProviderName,则ApplyUpdates失败.

谢谢

Ser*_*yuz 5

您可以LogChanges在修改数据集之前将其设置为false.或者,如果您在任何阶段需要更改日志,则可以调用MergeChangeLog合并更新.