![]() |
Migrando de InterBase a Firebird
Hola Foro:
Trabajo con Delphi 7 y he comenzado la migración de un sistema que utiliza InterBase 6.0 y se conecta con BDE 5.01. Actualmente para conectarme utilizo un TDatabase de la paleta BDE y para las consultas utilizo (cientos de) TQuery tambien de la paleta BDE. Ya hice la migración de la Base de datos a Firebird Para conectarme probé usar un TIBDatabase + TIBTransaction de la paleta InterBase. Hasta acá va bien. El problema surge cuando quiero conectar los (cientos de) Tquery con el TIDataBase. No lo logro. Encontré que puedo usar TIBQuery de la paleta InterBase, pero esto me obligaría a reemplazar todos los Tquerys que tengo por nuevos. Leí en otros hilos que migrar de InterBase a Firebird es sencillo, entonces esta es la pregunta: ¿que tengo que reemplazar los cientos de Tquerys por TIBQuerys? o ¿me puedo conectar de otra manera que no signifique hacer este engorroso trabajo? Desde ya muchas gracias por su atención. |
En teoría, no tienes que tocar nada en el programa.
Con interbase instalado, haces un backup transportable de la base de dato. Desinstala interbase completamente y borras gds32.dll Instalas firebird. Restauras el backup. Se acabó. |
Hola Carmelo Cash.
Cita:
Cita:
Saludos :) |
Edito, no me había fijado en los componentes:
Cita:
Y también, antes, haces el traspaso de la base de datos de interbase a firebird: Cita:
|
Hola
Hay que tener en cuenta que los tQuery trabajan con texto, osea se pueden leer como tal. Entendido esto es facil darse cuenta que si un query contiene una sentencia sql (que es texto) se puede leer y pasar a otro query, sea del componente que sea. Por consiguiente: Si se tienen miles de querys lo único que se necesita es colocar uno solo en el datamodule y pasarle el texto que contenga en el momento que se necesite (bien pueden ser dos o tres máximo :D) Sera muy rara la ocasión en la que mas de un query este conectado a la vez, es mas, es una mala practica hacerlo. Osea: No se necesita cambiar nada al programa simplemente la conexión la hará el nuevo componente sin necesidad de complicarse la vida. Muy a lo novato, lo se......:) Saludos |
Cita:
lo dificil de cambiar de TQuery a un TIBQuery radica en que muchos componentes TQuery pueden tener eventos programados, también pueden tener campos personalizados en el editor de campos. Yo miraría la posibilidad de hacer la conexión por medio de ADO y seguiría usando los TQuerys. |
Cita:
bueno, teniendo en cuenta que tenga mucha programación, de lo contrario, si los TQuerys están solos con las consultas y no tienen eventos o cosas similares ahí si me quedaría con los componentes IBX y dejaría los del BDE a un lado |
Hola
Creo que es logico pensar que la mejor manera de programar un query es por medio de la generación del texto por código y no usando su propio editor ya que asi se puede usar una y otra vez el query en el mismo programa, ademas de ser mas limpio y facil de entender. Si partimos de que la persona que pregunta tiene muchos query en su programa podemos pensar que no es un programador avanzado (como yo), por consiguiente dudo que tenga eventos programados, campos personalizados, vistas u otros menesteres. Usando esta analogia si simplemente se le cambia la ubicación al nuevo query (en el datamodule) y se le nombra igual que el query al que se reemplazara el programa no se dara cuenta de que paso, simplemente usara el nuevo query con su nueva conexión. Para mi es lo mas sencillo, mas teniendo en cuenta que revisar y cambiar todos los componentes de un programa sera una labor ardua y se necesitara probarlo muy bien por si algo quedo suelto, que sera muy probable. Como siempre metiéndome en camisa de once varas....:D Saludos |
Cita:
Cita:
|
Gracias a todos los que ayudaron
Gracias a todos los que ayudaron.
Les comento que hice. Hice lo que dijo Casimiro "En teoría, no tienes que tocar nada en el programa....." Luego de instalar fb, Instalé el BDE en una pc con windows 7, copié la aplicación y se conectó y abrió y funcionó rapidísimo y se pinchó. :eek: En realidad funciona todo menos un proceso que genera facturas, luego de generar alrededor de 2000 (dosmil) me aparece "OUT of memory" :confused: En la versión de InterBase para XP genera sin problema 8000 (ochomil) y no da ese error. Ahora no sé si tratar de detectar y solucionar ese error o cambiar todos los componentes y ver si será eso. |
Se me olvido decir que aveces aparece
"Out of memory" y otras veces "Out of memory while expanding memory stream" |
Bueno, encontré el problema, era un TMemoryStream que creaba al crear el formulario y lo liberaba al cerrarlo.
Ahora lo creo y lo libero cuando lo voy a usar y listo. ya se arreglo. Ahora hay que ver otras cositas pero creo que ya estamos Gracias mil por todo. |
estoy por hacer eso
carmelo, me comentas un poco tu experiencia de pasar de interbase a firebird asi lo intento....gracias
|
Es muy simple (te contesto aunque no sea Carmelo).
Ten en cuenta que firebird 1.0 es lo mismo que interbase 6.0 (interbase liberó el código y permitió que se creara firebird), después interbase volvió a cerrar el código (estamos hablando de tipos de licencias) y cada uno siguió su camino por separado, pero en general son muy compatibles. Así que en tu caso no tendrás ningún problema en pasar de interbase a firebird. Te recomiendo los siguientes pasos: 1. Desde tu sistema con interbase crea una backup transportable de la base de datos. Algo así como: gbak -b -t -v -user sysdba -password masterkey tubasededatos.gdb tubasededatos.gbk 2. Desinstalas interbase, asegúrate de borrar gds32.dll (búscalo y bórralo manualmente). 3. Descarga firebird 2.5 de la web de firebirdsql.org (Puedes usar esa versión en lugar de las más modernas). 4. Instala firebird 5. Restaura tu back, algo así: gbak -c -v -p 8192 -user sysdba -password masterkey tubasededatos.gbk tubasededatos.fdb Y listo. |
La franja horaria es GMT +2. Ahora son las 00:51:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi