En el controlador de eventos AfterPost para un ClientDataSet, necesito la información si la función ApplyUpdates para el registro actual hará una actualización o una inserción.¿Cómo puedo detectar si ApplyUpdates insertará o actualizará datos?
El evento AfterPost se ejecutará para los registros nuevos y actualizados, y no quiero declarar una nueva variable Flag para indicar si una operación 'update' o 'insert' está en progreso.
código Ejemplo:
procedure TdmMain.QryTestAfterPost(DataSet: TDataSet);
begin
if IsInserting(QryTest) then
// ShowMessage('Inserting')...
else
// ShowMessage('Updating');
QryTest.ApplyUpdates(-1);
end;
La aplicación escribirá un registro en el método AfterPost, después de ApplyUpdate ha completado. Entonces, este método es el que está más cerca de la acción, preferiría una solución que pueda insertarse por completo en este controlador de eventos.
¿Cómo podría implementar la función IsInserting, usando la información de la instancia ClientDataSet QryTest?
Editar: Voy a intentar ClientDataSet.UpdateStatus que se explica here.
¿Qué piensas hacer? ¿Realiza validaciones, actualiza la interfaz de usuario o algo de manipulación de datos? – zendar
La aplicación escribirá un registro en el método AfterPost, después de que se haya completado ApplyUpdate. Entonces, este método es el que está más cerca de la acción, preferiría una solución que pueda insertarse por completo en este controlador de eventos. Comprobar la matriz Delta aquí parece ser la forma más fácil. – mjn
Este es el mejor lugar si se registra por usuario, en el lado del cliente. Si desea el registro central para todos los usuarios, un mejor lugar estaría en el lado del servidor en el evento AfterApplyUpdates en TDataSetProvider. – zendar