PDA

Ver la Versión Completa : Problema con el BeforeDelete con un TADOTable


rubio
01-02-2012, 19:01:34
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

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:

...
ADOTCliente.Delete;
...

estás llamando otra vez al método Delete.

Intentá de este modo:

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.