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 12-10-2007
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Poder: 0
birmain Va por buen camino
Borrado de líneas en un IBDataSet

Un saludo a todos los participantes.
Aunque ya soy veterano, no participo en estos foros desde la primera fase en que estos se iniciaron, por lo tanto, me alegro reencontrarme con gente que comparte las mismas inquietudes.

Al asunto: Estoy empezando una aplicación con Firebird 1.5, IBX y delphi 7.
El problema es el siguiente: En los eventos AfterInsert, AfterPost y AfterDelete del IBDataSet, ejecuto el Commit de la transaccion asociada a este. La cosa funciona como se espera, excepto que si después de insertar una linea, esta es borrada. Entonces a pesar de que hay un Commit en el evento AfterDelete, la linea permanece inalterada. Si se borra una linea existente, en vez de una recién creada, funciona perfectamente.

He probado poner un CommitRetaining en el evento AfterDelete, y funciona, pero al cerrarse el DataSet hay que volverlo a abrir, y situar el puntero en el registro que estaba, con lo que no creo que esto sea solución.

¿Alguien sabe a que puede ser debido esto?. Muchas gracias a todos por anticipado.

Última edición por birmain fecha: 12-10-2007 a las 03:26:27.
Responder Con Cita
  #2  
Antiguo 12-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No manejo Firebird pero el concepto seria asi.
Código Delphi [-]
DataModule1.AC1.BeginTrans;
// lo que sea
DataModule1.AC1.CommitTrans;
// si se logro
 except
         on E:Exception do DataModule1.AC1.RollbackTrans;
// si no se logro, no pasa nada
Para mi no tiene logica que no se pueda eliminar un registro aunque este recién creado, puede estar pasando algo con el post del mismo, no se.
Saludos
Responder Con Cita
  #3  
Antiguo 12-10-2007
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Poder: 0
birmain Va por buen camino
Gracias, Caral, por tu respuesta.

La estructura que sugieres, la implemento en el caso de que una transacción afecte a más de una tabla. Por ejemplo en una facturación, donde se ven implicadas varias. Se trata de aplicar todos los cambios al mismo tiempo, o deshacerlos para mantener la coherencia.

Aquí se trata de una tabla sencilla. Por lo tanto, mando al servidor los cambios una vez producidos.


Un saludo.
Responder Con Cita
  #4  
Antiguo 12-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por cierto Bienvenido al club.
Cita:
Empezado por birmain Ver Mensaje
excepto que si después de insertar una linea, esta es borrada. Entonces a pesar de que hay un Commit en el evento AfterDelete, la linea permanece inalterada. Si se borra una linea existente, en vez de una recién creada, funciona perfectamente.
Me sigue pareciendo raro, seguro tanto como a ti.
Si una linea existente se borra y una recien creada no, la lógica dice que el problema no esta en el delete, esta en el insert o post, dependiendo de cual uses, osea que no se estan insertando con la suficiente rapidez los datos, por alguna razon que desconozco.
Bueno, es solo la opinion de un novato.
Saludos
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
Borrado de basuras REHome OOP 2 09-01-2007 13:18:00
Borrado en cascada fjolivares Firebird e Interbase 6 04-03-2004 11:09:25
Borrado de un .pas? danytorres Varios 5 30-12-2003 17:28:33
ADO Borrado en Cascada TONIAM Conexión con bases de datos 2 09-12-2003 15:20:25
Auto borrado brandolin Varios 6 27-09-2003 21:18:37


La franja horaria es GMT +2. Ahora son las 19:44:19.


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