Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2012
rubio rubio is offline
Miembro
 
Registrado: mar 2009
Posts: 36
Poder: 0
rubio Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 02-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 02-02-2012
rubio rubio is offline
Miembro
 
Registrado: mar 2009
Posts: 36
Poder: 0
rubio Va por buen camino
Hola ecfisa, gracias por la respuesta, me ha trabajado de maravilla. Cuando se tiene un sitio como este vale la pena el esfuerzo.

Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tadotable Updatebatch CCCP Conexión con bases de datos 3 17-07-2008 18:49:48
Tadotable indexname jlrbotella Conexión con bases de datos 2 20-09-2007 20:12:36
Filtros con TADOTable camomilass Conexión con bases de datos 5 08-11-2006 18:57:43
Problema con la funcion Seek de un TADOTable DanForever Conexión con bases de datos 2 04-05-2006 13:29:00
TAdoTable dudas !! lroblesco Conexión con bases de datos 3 11-06-2005 06:32:37


La franja horaria es GMT +2. Ahora son las 21:09:50.


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
Copyright 1996-2007 Club Delphi