Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Migrando de InterBase a Firebird (https://www.clubdelphi.com/foros/showthread.php?t=85830)

Carmelo Cash 12-05-2014 19:49:17

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.

Casimiro Notevi 12-05-2014 20:43:18

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ó.

ecfisa 12-05-2014 20:57:52

Hola Carmelo Cash.
Cita:

Empezado por Carmelo Cash (Mensaje 476326)
¿que tengo que reemplazar los cientos de Tquerys por TIBQuerys?

Es lo que yo te aconsejaría sin dudarlo.
Cita:

¿me puedo conectar de otra manera que no signifique hacer este engorroso trabajo?
En principio sería posible compartir el handle de un TDatabase con el TIBDatabase. Pero, aunque resulte un trabajo engorroso migrar los componentes, es preferible a trabajar con ese tipo de engendros y los futuros rompederos de cabeza que te va a traer...

Saludos :)

Casimiro Notevi 12-05-2014 22:25:05

Edito, no me había fijado en los componentes:
Cita:

Empezado por Casimiro Notevi (Mensaje 476331)
En teoría, no tienes que tocar nada en el programa.

Aunque los componentes debes cambiarlo, como indica ecfisa.

Y también, antes, haces el traspaso de la base de datos de interbase a firebird:
Cita:

Empezado por Casimiro Notevi (Mensaje 476331)
Con interbase instalado, haces un backup transportable de la base de dato.
Desinstala interbase completamente y borras gds32.dll
Instalas firebird.
Restauras el backup.


Caral 13-05-2014 04:05:15

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

RONPABLO 13-05-2014 04:35:30

Cita:

Empezado por Caral (Mensaje 476341)
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


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.

RONPABLO 13-05-2014 04:38:43

Cita:

Empezado por RONPABLO (Mensaje 476342)
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.


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

Caral 13-05-2014 05:11:53

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

RONPABLO 13-05-2014 06:59:27

Cita:

Empezado por Caral (Mensaje 476344)
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

Teniendo en cuenta que él dice:
Cita:

Empezado por Carmelo Cash (Mensaje 476326)
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.

Creo que puede estar en un punto en el que yo estuve hace varios años y fue migrar de paradox a MySQL y luego a Firebird, en ese momento la aplicación usaba los TTable (algo muy malo que pone muy lento la aplicación), pero afortunadamente no tenía programación en los eventos de dichos componentes aunque si tenida muchos campos editados, el cambiar de base de datos (2 veces) fue un proceso largo, monótono y tedioso ya que se tenía cientos de componentes TTable, unos pasaron casi derecho, solo era poner con el mismo nombre el componente TTable, pero muchos más tenían algunas referencias maestro detalle que no fueron muy transparentes... Particularmente creo que hay que ver cual es el caso particular en los cientos de TQuerys que tiene.

Carmelo Cash 13-05-2014 22:13:44

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.

Carmelo Cash 13-05-2014 22:15:51

Se me olvido decir que aveces aparece

"Out of memory" y otras veces

"Out of memory while expanding memory stream"

Carmelo Cash 14-05-2014 02:43:34

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.


La franja horaria es GMT +2. Ahora son las 16:52:10.

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