FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con Firebird, Transacciones, Zeos y Delphi
Mis estimados miembros de este excelente foro despues de leer y leer posts acerca de firebird buscando solucion a mis problemas, me he atrevido a pedirles de su ayuda.
LA verdad es que soy un super novato en Firebird y su utilizacion con Delphi, eso me doy cuenta al leer todo lo que hay en este importante foro, por lo tanto les expongo mis broncas. Tengo un sistema desarrollado en delphi el cual se utiliza como cliente servidor, uno de los problemas es que cuando hago cambios en un cliente (inserts, updates, deletes) estos cambios no se ven reflejados en algun otro cliente hasta que se cierran y se abren las aplicaciones, esto despues de lo que he leido al parecer es por como estoy utilizando las transacciones o tal vez por la falta de utilizacion de las mismas. Otra bronca es que al agregar muchos registros despues de un numero determinado el sistema se hace muy lento hasta el punto de bloquearse y se tiene que cerrar la aplicacion, esto tambien parece ser por la bronca de las transacciones, al parecer no las estoy cerrando por lo que he leido, pero por eso quiero confirmarlo con ustedes. Les comento que utilizo Firebird 2.1.3, DElphi 7 y componentes ZEOS, que estos ultimos son tambien algo por lo que me hace pedir ayuda, ya que al parecer esto es mucho mas sencillo con los componentes IB. Pero pues como tendria que cambiar todo el sistema o por lo menos los componentes pues prefiero preguntar antes para, si se puede ahorrar trabajo. Les anexo basicamente el codigo que estoy utilizando para los procesos que implican un cambio en la base de datos, tambien les comento que me doy cuenta que en la propiedad de TZConnection.TransactIsolationLEvel tenia tiNone, asi que creo que debo de comenzar por cambiarla por tiReadCommitted, creo yo. Este es el codigo:
Debo de aclarar que cuando menciono transaccion en el codigo no me refiero a transacciones de bases de datos, sino al proceso que se realiza, ya que asi se le llama en el sistema en cuestion. La verdad es que me da pena poner el codigo porque se que soy novatazo pero no me queda de otra. De antemano les agradezco enormemente la ayuda que me puedan dar . Saludos!! Última edición por Casimiro Notevi fecha: 27-01-2011 a las 14:14:46. Razón: Arreglar las etiquetas |
#2
|
||||
|
||||
Zeos es perfectamente válido, no veo necesario el que lo cambies, salvo que necesitaras más velocidad.
Mira este hilo, es un pequeño tutorial de Caral, en él crea un sistema básico con firebird y también indica los parámetros para el componente de transacciones. Básicamente pones un componente Basedato y otro Transaction, cuando haces alguna grabación, o sea '.post' (al insertar, borrar y editar) debes confirmar la transacción, normalmente en el evento AfterPost del Dataset, algo así como: dataset.transaction.commit (o commitreaining). Algunos componentes tienen una propiedad para que lo haga automáticamente, el commit, algo así como: autocommit=yes/no y se encargaría él de hacer el commit tras cualquier post. Échale un vistazo al hilo que te he indicado y aquí estamos por si tienes alguna duda más.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Gracias por tu pronta respuesta Casimiro.
Fijate que si lei el tutorial de Caral antes de preguntar, es por esto que les comento que talvez lo mejor seria cambiar a componentes IB ya que en ese tutorial se encuentra muy bien explicado su uso. Lamentablemente yo tengo los componentes Zeos en el sistema y no he encontrado un tutorial igual para estos. Deja reviso los parametros que me comentas y hago algunas pruebas con Zeos para ver si lo puedo solucionar y los mantengo al tanto. Gracias. |
#4
|
||||
|
||||
Estimado ElGatitoTapatio
Tenía un problema similar al tuyo cuando me inicie con Firebird, com odice nuestro compañero Casimiro, yo lo solucione con la propiedad autocommit=true. Intenta ver este parametros u otro del componente database y despues nos cuentas. Saludos -.
__________________
No todo es como parece ser... |
#5
|
|||
|
|||
Mis estimados!!
Al parecer, salvo lo que diga el cliente, ya solucione el problema como lo sospeche desde un principio creo que el problema fue la propiedad TZConnection.TransactIsolationLEvel donde tenia tiNone, la cambie por tiReadCommitted y parece ser que ya se actualizan al momento los datos. Ahora solo falta verificar lo de la lentitud del sistema al pasar mucho tiempo trabajando con el mismo. La verdad es que creo que esto tambien se va a solucionar, ya que creo que las transacciones se quedaban abiertas y llegaba un momento en que se saturaba la base de datos, esto salvo los mejores comentarios que me puedan dar ustedes. Pero bueno, esperemos a que lo pruebe el cliente y veremos que resulta. De nuevo les agradesco su ayuda. Saludos y los mantendré informados. Última edición por ElGatitoTapatio fecha: 28-01-2011 a las 17:29:27. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Firebird + Zeos + Delphi ¡¡ayuda!!... | Jheysson13 | Conexión con bases de datos | 19 | 17-12-2008 13:52:31 |
Comitar transacciones con DBExpress, Delphi 6 y Firebird | cesar_picazo | Conexión con bases de datos | 1 | 26-05-2006 23:39:51 |
Problemas con las Transacciones en Firebird 1.5 y Delphi 2005 | Jesús Pena | Firebird e Interbase | 3 | 08-04-2006 22:10:15 |
Transacciones FireBird con Zeos | vichovi | Conexión con bases de datos | 3 | 13-07-2005 09:49:29 |
Como Realizar transacciones con Zeos o en Delphi | Dayvis | MySQL | 1 | 22-10-2004 04:00:47 |
|