delphi delphi-7 tdataset

Delphi: cancelando un TDataSet.Post en un evento OnBeforePost



delphi-7 (1)

En nuestra pantalla principal de ingreso de datos, tenemos un cuadro de diálogo Aceptar / Cancelar en el evento OnBeforePost.

  • OK deja que las cosas sigan su curso
  • Cancelar ahora hace un Dataset.Cancel;

Que hace lo que se supone que debe hacer, revertir cualquier cambio y pone el conjunto de datos en modo exploración.

Esto está bien para la mayoría de los clientes, pero se nos ha preguntado si se puede cambiar a

  • Cancelar , cancelar la publicación y permanecer en modo de edición con los cambios actuales guardados.

Si quieren cancelar, pueden usar el botón Cancelar.

Mirando la fuente del procedure TDataSet.Post; no parece posible usar el evento de esta manera.

¿Alguien tiene alguna idea sobre cómo se podría hacer esto?

Seguimiento: así es como he elegido manejarlo ahora

case MessageDlg(''Save Changes?'', mtWarning, [mbYes, mbNo, mbAbort], 0) of mrYes: ; mrNo: Dataset.Cancel; mrAbort: Abort; mrNone: Abort; end;


Llamar al método Abort (desde el System de la unidad, si no recuerdo EAbort ) genera una excepción EAbort silenciosa, que cancela solo la operación actual. Eso debería funcionar.

(Por cierto: este método de cancelar una operación de base de datos también se describe en algún lugar profundo del sistema de ayuda como la forma "normal" de lograr esto, de ahí es de donde obtuve esta técnica originalmente).