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 07-12-2005
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 22
Er_Manué Va por buen camino
Transacciones anidadas en firebird

Hola,

Estoy desarrollando mi primera aplicación que usa firebird, normalmente he usado siempre ADO, pero ahora por necesidades de multiusuarios he tenido que cambiar.

Estoy programando en D7, con IBX, Transacciones Read Committed y confirmación manual de las transacciones en los eventos AfterPost y afterCancel.Os explico el problemilla:

Tengo dos tablas Master-Detail, aticulos (master) y tarifas_articulo (detail), las tablas se relacionan mediante el ID de artículos y el ID de la tabla tarifas_articulos es ID_ARTICULO, ID_TARIFA; Generando ID_TARIFA manualmente al insertarlo (valor máximo) por lo que debo hacer un commit al final de cada inserción para no obtener valores duplicados, y aquí es precisamente donde está mi problema: Si el usuario cancelara la inserción o modificación del artículo, únicamente podría hacer un rollback sobre la tabla articulos, pero no sobre la tabla tarifas_articulos. ¿Alguna sugerencia?

Saludos

Última edición por Er_Manué fecha: 07-12-2005 a las 13:22:43.
Responder Con Cita
  #2  
Antiguo 07-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Problema

Disculpa, no se si puede ser una sugerencia o no, pero vos no podes en la tabla articulos ir realizando distintos Insert y Post, sin ningun Commit, de esta forma vos vas ingresando los datos pero sin la necesidad de un commit como para poder hacer un roolback. no se si esta podra ser una solucion pero era algo que se me ocurrio.
Saludos
Responder Con Cita
  #3  
Antiguo 07-12-2005
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 22
Er_Manué Va por buen camino
hola Patricio, el problema es que si al ir insertando los datos en la tabla tarifas_articulos sin hacer commit al obtener el valor máximo de ID_TARIFA, sujeto a ID_ARTICULO sea el artículo que estamos añadiendo o modificando, siempre dá el valor del último registro confirmado con commit, con lo cual no me está obteniendo realmente el valor máximo.

Tampoco puedo usar un generado, ya que no pueden haber huecos en la numeración de las tarifas.

saludos
Responder Con Cita
  #4  
Antiguo 07-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
uso de alguna variable auxiliar

Esto te puede servir?
vos antes de hacer el primer insert podes tomar el valor maximo y a partir de ahi con otra variable vas calculando el valor que realmente tendrias que ir agregando, si el valor maximo es 100, vos sabes con otra variable que el primer insert es 101 y asi sucesivamente
No se si esto te sirva
Saludos
Responder Con Cita
  #5  
Antiguo 07-12-2005
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 22
Er_Manué Va por buen camino
pues es una opción válida lo que pasa que me gustaría saber si hay algún otro método mediante varias transaciones. Muchas gracias Patricio
Responder Con Cita
  #6  
Antiguo 07-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Hilo en foro

Transaciones IBX

fijate un hilo en el foro de interbase que vi recien y que capaz te sirve.
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


La franja horaria es GMT +2. Ahora son las 16:08:11.


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