Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con el BeforeDelete con un TADOTable (https://www.clubdelphi.com/foros/showthread.php?t=77498)

rubio 01-02-2012 19:01:34

Problema con el BeforeDelete con un TADOTable
 
Hola amigos, primero gracias a todos aquellos que de una forma u otra nos ayudan a resolver nuestros problemas y feliz año nuevo a todos, algo retrasado ya que desde el pasado año no me conectaba.

Tengo una tabla en SQL llamada Cliente, la misma se muestra con un DBGrig, además tengo TDBNavigator, en el evento BeforeDelete del ADOTable pongo una pregunta de confirmación, en caso de ser afirmativa la respuesta mando a borrar el record. El problema es el siguiente, en cuanto se ejecuta el Delete se vuelve a ejecutar el evento BeforeDelete y no sale a no ser que se cancele y por lo tanto el record nunca se borra.

Mi pregunta es, como puedo hacer para que ese evento solo se realice en el momento que se oprima el botón de borrar del TDBNavigator?.

Aqui está el código de mi programa

Código Delphi [-]
procedure TfrmClientes.ADOTClienteBeforeDelete(DataSet: TDataSet);
begin
  if not Confirm('Desea Borrar este Cliente?') then
    Abort
  else begin
    ADOTCliente.Delete;
    ADOTCliente.First;
  end;
end;

Gracias.

ecfisa 02-02-2012 17:45:45

Hola rubio.

En primer lugar tenes que poner la propiedad ConfirmDelete del TDBNavigator en False.

Luego el problema se provoca por que cuando se dispara el evento BeforeDelete, ese registro (de no mediar intervención alguna) ya se va a borrar.
Entonces cuando dentro del evento invocas:
Código Delphi [-]
  ...
  ADOTCliente.Delete;
  ...
estás llamando otra vez al método Delete.

Intentá de este modo:
Código Delphi [-]
procedure TForm1.ADOTClienteBeforeDelete(DataSet: TDataSet);
begin
  if MessageBox(Handle, 'Desea Borrar este Cliente?', 'CONSULTA', MB_ICONQUESTION + MB_YESNO) = mrNo then
    Abort;
end;

Saludos.

rubio 02-02-2012 19:06:41

Hola ecfisa, gracias por la respuesta, me ha trabajado de maravilla. Cuando se tiene un sitio como este vale la pena el esfuerzo.

Gracias.


La franja horaria es GMT +2. Ahora son las 00:10:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi