【发布时间】:2010-11-08 23:04:05
【问题描述】:
在 ClientDataSet 的 AfterPost 事件处理程序中,我需要当前记录的 ApplyUpdates 函数是否执行更新或插入的信息。
将为新的和更新的记录执行 AfterPost 事件,我不想声明一个新的 Flag 变量来指示是否正在进行“更新”或“插入”操作。
示例代码:
procedure TdmMain.QryTestAfterPost(DataSet: TDataSet);
begin
if IsInserting(QryTest) then
// ShowMessage('Inserting')...
else
// ShowMessage('Updating');
QryTest.ApplyUpdates(-1);
end;
ApplyUpdate 完成后,应用程序将在 AfterPost 方法中写入日志。所以这个方法是离动作最近的地方,我更喜欢一个完全可以插入到这个事件处理程序中的解决方案。
如何使用 ClientDataSet 实例 QryTest 中的信息实现 IsInserting 函数?
编辑:我会试试 ClientDataSet.UpdateStatus 解释here。
【问题讨论】:
-
你打算做什么?是否进行验证、更新用户界面或一些数据操作?
-
ApplyUpdate 完成后,应用程序将在 AfterPost 方法中写入日志。所以这个方法是最接近动作的地方,我更喜欢一个完全可以插入到这个事件处理程序中的解决方案。在这里检查 Delta 数组似乎是最简单的方法。
-
如果您在客户端按用户登录,这是最好的地方。如果你想为所有用户集中日志,更好的地方是在 TDataSetProvider 的 AfterApplyUpdates 事件中的服务器端。
标签: delphi dbexpress tclientdataset