Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
Problemas con applyupdates

Bueno en primer lugar decir que no sabía dónde situar este hilo, así que si me equivoco ruego que me disculpen.

Uso Firebird 1.5, delphi7 y dbexpress.

El caso es que tengo 2 tablas. La primera de ellas es la cabecera de un documento (una factura por ejemplo) y la segunda es el cuerpo de esa cabecera. Indicar que están relacionadas por un campo en la segunda tabla que indica a qué documento pertenece.

El proceso que sigo es el siguiente:
- Abro una transacción.
- Modifico o inserto tanto la cabecera como las diferentes líneas.
- Hago ApplyUpdates de la cabecera.
- Hago ApplyUpdates del cuerpo. (Aquí hay más de un registro afectado)
- Si todo ha ido bien, hago commit de la transacción.
- En caso contrario dejo que pueda volver a hacer cambios.
- Si cancelo, hago rollback de la transacción.

Para acceder a la primera tabla uso un TSQLquery (para traerme únicamente un único registro), con un provider y un clientdataset. En el query indico los campos claves y el provider lo tengo a upwherekeyOnly.

Para la segunda tabla tengo la misma estructura.

El caso es que si no se produce ningún error en la base de datos (los dos applyupdates son correctos) todo va fenomenal. Si se produce un error en el primer applyupdates, también va todo bien. El problema viene cuando el primer applyupdates es correcto (no creo que sea la causa de lo que me pasa) y en el segundo applyupdates (el que afecta al cuerpo y por tanto puede afectar a más dé un registro) falla. En tal caso recojo la excepción y la muestro, hasta ahí bien. Pero cuando arreglo el fallo de esa línea y vuelvo a hacer applyupdates del conjunto, me acepta todo bien pero me duplica los registros que no han dado error y que eran nuevos en el cuerpo, con los existentes no hace nada raro.

¿Alguna idea? ¿Si se produce un error al hacer un applyupdates que afecta a más de un registro, se producen los cambios que no dan error, o por el contrario el applyupdates se hace de todo o de nada?

De antemano muchas gracias.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 14:47:02.


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