No tengo mucho tiempo para I+D (Idear+Dormir) por dar los ultimos toques a un proyecto pendiente... aun asi me he tomado unas horas libres para trastear con foxydb+firebird. Tenia algun conocimiento de interbase con el tema de mantenimiento, lo cual no me ayudo en absoluto :-)
Descargo el firebird... no, me dice que no lo encuentra pero busco en otra parte de la pagina y ahi esta. Empezamos bien. Me bajo las ultimas versiones 32/64 bits para guardar a buen recaudo y poder instalar en ambas plataformas la misma version 2.5. Por ahi esta la 3 alpha con una novedad que me hubiera venido bien pero esa es otra historia.
Instalo sin problemas y lo unico que cambio es que se ejecute como aplicacion y no como servicio y activo el ibguardian para tenerlo mas a mano.
Pongo el programa full convert y lo configuro y paso automaticamente todas mis dbf. Todas? No. Unas 16 me da errores hasta que buceando por internet dice que los campos LOGICAL del dbf no tiene correspondencia en firebird (la 3 si lo hara) y quiere asignarle el tipo BOOLEAN y no hay modo. La recomendacion es cambiar todo los BOOLEAN por CHAR(3) y dicen que asi evitan tener que cambiar el codigo en mi aplicacion. Eso es algo que aun tengo que probar, pero bastante tengo con tener todos los dbf metidos en una base de datos FDB sin escribir nada... uy, renombro .GDB de interbase por .FDB
Aun asi, se me ha olvidado crear el campo ID (ID Autoincremental Primary
Key) en cada tabla de la base de datos para que trabaje bien foxydb
internamente. Si ese nombre ya lo estas usando en tus tablas, puedes
modificar en el prg de foxydb.
Llegados a este punto, podria haber intentado usar el interbase portable o el prg que convierte dbf a firebird, pero donde queria llegar era a meterle mano al foxydb y ya estaba ahi. Veo que hay una version nueva 1.1 desde Diciembre (no me he enterado de su existencia por aqui)...
https://foxydb.wordpress.com/foxydb-1-1/Elijo que trabaje con firebird y modifico los valores en el procedimiento TEST, copio algunos ejemplos del blog, le añado un set default to MiBaseDeDatos para no tener lios y alla va!!!!
Error!!! No me jodas que no tengo tiempo. Despues de revisar veo que algunos ejemplos tiene la primera comilla "decorativa" y no la doble comilla de rigor ("). Me acuerdo del Dr. Meza por un momento, asi que aprovecho para saludarle y desearle que revise esos codigos del blog. A todos nos ha pasado alguna vez eso de las comillas :-)
Ya funciona, pero me tira un error que por lo menos no es el tipico 0xA034445543 que te deja cara de poker. Se me olvido un gran detalle, en especial despues de haber formateado mi pc, descargar de la pagina del firebird el driver ODBC, lo hago y ni siquiera lo agrego en el panel de control.
Ejecuto y ya esta. He conseguido ejecutar un BROWSE. Que epico. Ademas le pongo un append blank y veo con sorpresa como lo llena todo de .NULL. lo borro campo por campo y donde es numerico se pone a cero y en caracter se queda vacio. Como debe ser. Eso tengo que mirarlo con mas tiempo. Marco algunos registros para borrarse pero no lo hace. Eso es lo que pasa cuando uno se sale un momento de foxpro :-)
Y esa es la cronica de una conexion anunciada, ahora queda estudiar algunas cosas que se pueden mejorar sobre todo cuando tienes que convertir un sistema DBF a SGDB.
He pensado algunas cosas como una variable AutoCursorEdit, por defecto esta en .F. pero si lo pones en .T. cuando ejecutes use() automaticamente activaria la funcion CursorEdit ( Hacer Cursor editable) ahorrando escribir un comando (no digo de eliminar esa funcion). Esto es especialmente util a la hora de hacer la conversion de una aplicacion completa.
Quizas una funcion parecida a tableupdate() odb.tableupdate() que llamase a update y despues a save tambien podria ser util en este sentido.
Se me ocurren mas cosas, y solo lo comento por unas primeras impresiones, sin conocer lo que tengo entre manos lo suficiente para saber si son opiniones utiles o fuera de lugar.
A pesar de que parece una especie de suplicio llegar a este punto, no lo ha sido, solo lo he dramatizado un poco por hacer algo de espectaculo :-D
Lo cierto es que ha resultado bien interesante, pero antes de meterme a modificar toda mi aplicacion, tengo que estudiarlo bien porque no va ha ser nada facil.
un saludo