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 09-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Talking Es posible dos transacciones simultanes?

Hola foro tengo una pequeña consulta. trabajo con Delphi5 e IB6 server. Si tengo dos tabla A y B, que no tienen entre si, relacion alguna.

si de pronto un usuario quiere agregar registros a la tabla A, se comienza una Transaccion para ello, ahora si en ese momento otro usuario quiere agregar un registro en la tabla B, va a tener que esperar hasta que el A termine o se puede hacer algo para tener transacciones simultaneas.

Espero me haya podido explicar saludos para todos
Responder Con Cita
  #2  
Antiguo 09-12-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
Interbase tiene una estructura muy particular, transacciones multigeneracionales, que no te impiden el hacer lo que deseas, pues los bloqueos de pagina nunca se producen (hasta donde recuerdo).
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 09-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Eso es perfectamente posible. De hecho, si usas un conjunto de componentes que lo soporte (IBX, IBO, MDO, etc) podrías tener mas de una transacción dentro de una sola conexión...

Y si, hector, en interbase (desde que yo lo conozco, 5.x) los bloqueos son a nivel de registro y no de página, además que gracias a la arquitectura multigeneracional, las transacciones de escritura nunca bloquean a las transacciones de lectura.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 09-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
que me recomiendan- codigo o los componentes

y para lograrlo que es mejor usar, los componentes de la solapa de interbase o a traves de codigo tambien se puede hacer?
Saludos
Responder Con Cita
  #5  
Antiguo 10-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Podes hacerlo con los componentes de tu preferencia: IBX, IBO, FIB, BDE, ADO, etc.

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 12-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Gracias Jachguate por tu respuesta

Ahora, de los componentes que me nombras yo tengo solamente una solapa que dice INTERBASE, esa me sirve? o me tengo que descargar los componentes que me decis.
Disculpa que te siga preguntando pero segun tu experiencia cual me recomendas, yo tengo delphi 5 e Interbase 6.

Y cual de ellos si cambio de version funciona normalmente?

Saludos y gracias
Responder Con Cita
  #7  
Antiguo 12-12-2005
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
Hola Patricio...

Como se cita más arriba, Interbase puede manejar varias transacciones al mismo tiempo. Lo que debes hacer es asignar una transaccion a cada tabla, lo demás lo maneja Interbase, además al tener varias transacciones es más rápido. Yo uso los componentes de la paleta Interbase que vienen con Delphi

Espero te sirva de algo..

Saludos
Responder Con Cita
  #8  
Antiguo 12-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por Patricio
Gracias Jachguate por tu respuesta

Ahora, de los componentes que me nombras yo tengo solamente una solapa que dice INTERBASE, esa me sirve? o me tengo que descargar los componentes que me decis.
Disculpa que te siga preguntando pero segun tu experiencia cual me recomendas, yo tengo delphi 5 e Interbase 6.
Una recomendación depende de si queres gastar alguna plata en comprar componentes (en cuyo caso IBO me parece la mejor opción) o si queres usar componentes gratuitos: (MDO tiene buena cara, si no, pues están IBX que ya has pagado con delphi) o como última opción el BDE, que aún cuando está sin actualizaciones desde hace mucho tiempo (y así permanecerá) también es cierto que saca el trabajo de una manera mas o menos decente.

En algunos (como IBX y MDO) el manejo de las transacciones es explícito, mediante un componente TxxTransaction (TIBTransaction, TMdoTransaction) y en otros (como el BDE o IBO) el manejo es mas automático.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 13-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Un poco perdido

bueno me decidi por usar los componentes de la solapa de Interbase, ahora donde puedo encontrar ejemplos de como usar estos componentes?

lo que si estoy medio perdido para arrancar usando estos componentes

yo antes tengo un ModuloDatos, en donde tengo las tablas y la base de datos en si y cuando quiero agregar o modificar hago lo siguiente:

FModuloDatos.Basededatos.StartTransaction;
Modificotodo;
FModuloDatos.Basededatos.Commit;

como seria esto mismo con los componentes de la solapa de Interbase?
Saludos espero poder explicarme pero estoy cazando la idea de los componentes
Responder Con Cita
  #10  
Antiguo 13-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
He mirado un poco y lo que yo necesitaria tener puede ser esto:

Un IBDataBase relacionado con mi base de datos que es el que van a hacer referencia los IBTransaction

y un IBTransaction por cada una de las tablas que tengo

cuando voy a insertar a las tablas directamente trabajo con la transaccion relacionada a dicha tabla. Esto es asi?
Responder Con Cita
  #11  
Antiguo 14-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por Patricio
He mirado un poco y lo que yo necesitaria tener puede ser esto:

Un IBDataBase relacionado con mi base de datos que es el que van a hacer referencia los IBTransaction

y un IBTransaction por cada una de las tablas que tengo

cuando voy a insertar a las tablas directamente trabajo con la transaccion relacionada a dicha tabla. Esto es asi?
No veo necesidad para tener tantos IBTransaction. De hecho, no tendría sentido si queres tener actualizaciones que involucren varias tablas dentro de una sola transacción, que es lo típico.

Podrías tener una sola transacción en toda la aplicación, o dividirla en secciones "funcionales" de acuerdo al manejo de los querys, dado que con IBX los datasets se cerrarán al realizar un commit o rollback en la transacción.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 14-12-2005
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Sigo en Problemas

lo que pasa es que yo tengo que agregar los datos de una empresa y a la misma agregarle en otra tabla todas las direcciones y en otra tabla todos los telefonos.

Entonces como no quiero usar tablas auxialiares mi idea era que cuando se agregar las direcciones tener una transaccion para eso, cuando se agregan los telefonos tener otra transaccion y cuando los datos de la empresa otra transaccion, porque si el usuario cancela el ingreso de la empresa, tengo que volver a atras lo que se ingreso en la tabla de Telefonos y Direcciones. No se si me explico bien.

Hice algo asi pero no me dio resultado

cuando se fue a agregar una direccion hice
IBTransactionDireccion.StartTransaction
....

y cuando me dio el ok con los datos de la empresa hice
IBTransactionEmpresa.StartTransaction
....
IBTransactionEmpresa.Commit
IBTransactionDireccion.Commit //ahi confirmo luego que se dio el ok en la empresa

pero obviamente me dio error, cual seria la mejor manera de hacer lo que quiero?

Saludos
Responder Con Cita
  #13  
Antiguo 14-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
El modelo de transacciones que uses tiene mucho que ver con el diseño "funcional" de tu aplicación.

Lo que no te recomiendo es que uses transacciones separadas, por ejemplo, para insertar un encabezado de factura y sus detalles, pues si ocurre un error al insertar un detalle y has dado commit a la transacción del encabezado, ocurrirá que se quede un encabezado sin detalle, y estarías como volviendo a la edad de piedra, perdiendo la acidez de las transacciones.

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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 21:38:41.


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