Firebird Embedded

1,468 views
Skip to first unread message

Ultraton500

unread,
Jan 2, 2017, 12:52:49 PM1/2/17
to Comunidad de Visual Foxpro en Español
Saludos y Felíz Año Nuevo para todos. 

Estoy intentando hacer funcionar la versión embedded de Firebird para una aplicación monousuario y siguiendo las indicaciones del "README_embedded.txt" que trae la descarga copié a la carpeta de mi aplicación los archivos

fbembed.dll (renombrado a fbclient.dll)
ibuintl.dll
icudt30.dll
icuin30.dll
icuuc30.dll
firebird.msg
firebird.conf

pero la conexión y las consultas que hago utilizan el servidor Firebird que tengo instalado en lugar del embedded que está en el directorio de mi aplicación y si lo detengo ni siquiera consigo conectarme.
Estoy bastante desorientado con esto, no entiendo si en el string de conexión debo indicar que voy a utilizar el motor embebido o algún otro dato y aunque he buscado e intentado variar el string no he podido lograr nada.
Por esta razón agradeceré mucho si alguien puede orientarme para poder superar este obstáculo.

Saludos cordiales,
Javier.

HernanCano

unread,
Jan 2, 2017, 11:49:12 PM1/2/17
to Comunidad de Visual Foxpro en Español
Colega:
Tuve el mismo inconveniente. Debí (1) borrar tanto del disco duro (renombrar mejor) los archivos de otras instalaciones/reinstalaciones y (2) suprimir (manualmente) del registro de Windows las referencias a cualquier FireBird (embebido era lo único que yo tenía).

No pude ejecutar dos veces el embebido (por ejm para dos aplicaciones diferentes en el mismo computador).

Es mi experiencia. Si alguien tiene algo que nos pueda ayudar, agradecemos comentar.

HERNAN

Ultraton500

unread,
Jan 3, 2017, 12:53:16 AM1/3/17
to Comunidad de Visual Foxpro en Español
Gracias Hernán por tu colaboración. Mañana me pongo a probar lo sugerido a ver si tengo la misma suerte. De paso te pregunto.. qué datos incluyes en el string de conexión?.. por lo que leí debería funcionar solo con user, password y database (sin ruta) aunque igualmente probé de todo un poco.

Saludos cordiales,
Javier.

mapner

unread,
Jan 3, 2017, 11:43:10 AM1/3/17
to Comunidad de Visual Foxpro en Español
Hola,

la versión Ebedded de FB es para usar en modo monousuario por una aplicación a la vez. Caso típico sería hacer un catalogo de productos en CD que contenga la app que consulta y la BD, sin necesidad de instalar nada adicional en la PC. 

Consulta el muy buen blog de Walter Ojeda Valiente de Firebird.


El martes, 3 de enero de 2017, 1:49:12 (UTC-3), HernanCano escribió:

Esteban H.

unread,
Jan 3, 2017, 2:44:01 PM1/3/17
to publice...@googlegroups.com

Hola Javier.

 

No es nada complicado q te funcione el FB Embedded. Seguramente te falte registrar alguna librería.

Yo lo hice funcionar leyendo el Blog de Walter como te dice mapner.

No hay q hacer ningún cambio en el String.

 

Suerte

 

Saludos.

Esteban.

Ultraton500

unread,
Jan 4, 2017, 1:59:33 AM1/4/17
to Comunidad de Visual Foxpro en Español, er...@yahoo.com.ar
Mapner, Esteban.. muchas gracias por el apoyo.
Ya había estado leyendo el blog de Walter pero no hay nada referido a la instalación ni al string por lo que me he guiado por los archivos de ayuda de Firebird.
El string que uso habitualmente para conectarme al servidor es:

SQLStringConnect("DRIVER={Firebird/InterBase(r) driver}; SERVER=localhost; USER=SYSDBA; PASSWORD=masterkey; DATABASE=C:\sistema\DB_COTIZADOR.FDB;")

y si no lo modifico sigue conectándose al servidor y no al embedded.
El string que uso para conectarme al embedded es:

SQLStringConnect("USER=SYSDBA; PASSWORD=masterkey; DATABASE=C:\sistema\DB_COTIZADOR.FDB;")

.. pero no funciona ni por casualidad.
Lo que no hice fue registrar las librerías porque entiendo que solo basta con ubicarlas dentro del directorio de la aplicación. De todos modos intenté registrarlas pero por ej. al registrar dbclient.dll me devuelve el mensaje

Se cargó el módulo "C:\sistema\fbclient.dll", pero no se encontró el punto de entrada DllRegisterServer.
Asegúrese de que "C:\sistema\fbclient.dll" es un archivo DLL u OCX válido e inténtelo de nuevo.

Se suponía que esto era algo sencillo pero se me vuelve cada vez mas frustrante y no sé qué mas probar.

Saludos y gracias nuevamente,
Javier.

mapner

unread,
Jan 4, 2017, 7:04:43 AM1/4/17
to Comunidad de Visual Foxpro en Español
Según entiendo, la version embedded utiliza un DLL que oficia de motor y cliente para conectarse a la BD, FBEMBED.DLL, debes referenciarlo en el string de conexión como CLIENT=....

Aquí documentación util aunque en inglés.

http://www.destructor.de/firebird/1.5/embedded.htm

http://firebirdsql.org/manual/ufb-cs-embedded.html

Ultraton500

unread,
Jan 4, 2017, 5:00:05 PM1/4/17
to Comunidad de Visual Foxpro en Español
Así es mapner, esa es la dll servidor y cliente a la vez y justamente la referencia a esta dll es la parte que no entiendo... dónde se hace referencia al motor embedded??... cómo sabe la aplicación que tiene que usar el motor embedded??

Según la documentación la cadena de conexión no debe contener un nombre de host (ni siquiera localhost), por eso es que si se lo indico en el string se conecta al servidor remoto. Pero si no se lo indico no se conecta a ningún motor y ahí es donde se me queman los papeles.
Intenté incorporando "CLIENT=fbclient;", "CLIENT=fbclient.dll;" e incluso usando la dll con su nombre original: "CLIENT=fbembed;" y "CLIENT=fbembed.dll;" pero ni se inmuta.

Gracias una vez mas por tu ayuda.
Saludos cordiales,
Javier.

Antonio Meza

unread,
Jan 4, 2017, 5:14:22 PM1/4/17
to Comunidad de Visual Foxpro en Español
En el blog de Walter tiene un proyecto para descargar de una aplicación portable con firebird que es lo que tu necesitas


Mira lo que explica Walter y luego ve el código.

Lo que si debes tener claro es el el driver odbc se debe registrar.

saludos
Antonio Meza

Esteban H.

unread,
Jan 4, 2017, 5:24:37 PM1/4/17
to publice...@googlegroups.com

Seguramente tu inconveniente debe estar q no has incorporado las librerías de ODBC y si lo hiciste no las has registrado.

 

Saludos

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Ultraton500


Enviado el: miércoles, 04 de enero de 2017 07:00 p.m.
Para: Comunidad de Visual Foxpro en Español

Ultraton500

unread,
Jan 5, 2017, 12:37:33 AM1/5/17
to Comunidad de Visual Foxpro en Español
Qué tal Antonio... gracias por el aporte.

Había visto ese tema en el blog de Walter pero no es lo que busco, no necesito que mi aplicación sea portable sino lo contrario. Necesito que cada cliente tenga que contratar conmigo la obtención y uso del programa.
Si bien este programa es funcional con los datos personales del usuario y no le sería útil a quién lo utilice sin una configuración de mi parte no quiero tentar a nadie a que busque ayuda para poder cambiar esos datos ya que si alguien lograra eso podría explotarlo comercialmente sin que yo me entere perdiendo así potenciales clientes. Creo que la portabilidad en este caso se me vuelve en contra ya que sería como tener un programa semi-crackeado.

En cuanto al driver odbc entiendo que la odbcfb.dll del artículo de Walter se debe registrar justamente por tratarse de una aplicación portable. De todas formas la copié al directorio de mi aplicación y la registraré pero no surtió ningún efecto.

Saludos cordiales,
Javier.

Ultraton500

unread,
Jan 5, 2017, 1:03:32 AM1/5/17
to Comunidad de Visual Foxpro en Español, er...@yahoo.com.ar
Esteban, como le comentaba a Antonio entiendo que los archivos odbcfb.dll, odbcfb.lib y odbcfb.pdb son necesarios en el caso de una aplicación Firebird portable ya que lo indica Walter en "Aplicaciones portables con Visual FoxPro y Firebird" y no se mencionan en la documentación de Firebird embedded. Sin embargo los copié al directorio de mi aplicación y registré el archivo odbcfb.dll pero sigo sin poder conectarme.

Por tratarse de un programa monousuario pequeño quise aprovechar la sencillez de la versión embedded para hacer que la instalación sea rápida y no tener que transferir, instalar y configurar la versión c/s de Firebird pero me parece que me voy a tener que resignar nomás.

Saludos cordiales,
Javier.

mapner

unread,
Jan 5, 2017, 4:23:30 AM1/5/17
to Comunidad de Visual Foxpro en Español
Para acceder desde VFP a Firebird es necesario INSTALAR los drivers ODBC. Esto es así también para la versión Embedded de FB.

Ultraton500

unread,
Jan 5, 2017, 9:46:04 AM1/5/17
to Comunidad de Visual Foxpro en Español
No sabía, pensé que con Embedded no había que instalar nada mas que la aplicación. Gracias por el dato.
Seguramente sea por eso que hasta el ahora la única manera de conectarme es incluyendo el driver en la cadena de conexión pero esto hace que se conecte al servidor instalado y aunque detenga el servicio no se conecta al embedded. Esto me genera mas preguntas pero bueno.. ya estoy resignado.

Saludos cordiales,
Javier.

Antonio Meza

unread,
Jan 5, 2017, 10:18:02 AM1/5/17
to Comunidad de Visual Foxpro en Español
Javier estas tirando la toalla muy rápido!!! y creo que estas muy confundido!! y ni siquiera revisaste el código de Walter.

Independientemente que el link de Walter sea para hacer una aplicación portable VFP+Firebird no quiere decir que tu lo vayas a usar así, lo que tu necesitas es conectarte a Firebird embedded y en el ejemplo de Walter se esta conectando a Firebird embedded, lo de mas esta de mas y lo de menos es de menos jejeje

Y como te lo dije al principio "Lo que si debes tener claro es el el driver odbc se debe registrar.", entonces si ya tienes el driver odbc instalado ya no necesitas copiar las librerías odbc, solo necesitas los archivos de Firebird embedded  y las demás tripas de VFP que tu requieras.

Solo es cuestión que bajes el ejemplo, hagas las pruebas, revises el código y lo adaptes a lo que quieres antes de resignarte!!!

Ultraton500

unread,
Jan 6, 2017, 2:12:23 AM1/6/17
to Comunidad de Visual Foxpro en Español
Gracias Antonio por darme ánimo, pasa que estoy un tanto frustrado, pero es cierto, me quedaba por revisar el código del ejemplo de Walter, así que lo descargué y además de ver que funcionaba bien pude ver cómo es el string para conectarse a la versión embedded:

DRIVER={Firebird/InterBase(r) driver}; USER=SYSDBA; PASSWORD=masterkey; ROLE=; DATABASE=DEMO.FDB; OPTIONS=131329;

y como vi que es igual a la que uso para conectarme al servidor instalado lo apagué, volví a probar y descubrí que al ejemplo de Walter le pasa lo mismo que a mi código: funciona con el servidor y no con el fbembed.dll que está en su propio directorio.
Pude comprobar lo mismo en mi notebook con W Vista en donde luego de desinstalar Firebird c/s la aplicación portable de Walter dejó de funcionar.
También, por las dudas, intenté eliminar manualmente las odbcfb.dll y fbclient.dll que aparecían en el registro de Windows pero observé que la la fbclient.dll volvía a aparecer cada vez que hacía una búsqueda. No sé si eso está indicando algún problema pero quería comentarlo.

Saludos cordiales,
Javier.

Antonio Meza

unread,
Jan 6, 2017, 10:10:29 AM1/6/17
to Comunidad de Visual Foxpro en Español
Walter tiene un foro deberías consultarle ahí siempre responde.

saludos
Antonio Meza

Ultraton500

unread,
Jan 6, 2017, 11:18:28 AM1/6/17
to Comunidad de Visual Foxpro en Español
Publiqué esta consulta hace una semana en el foro de Walter y no pasó mas que recibir unas pocas vistas, incluso hay una entrada también sin respuesta desde hace un mes atras. Quizá sea muy época de vacaciones.
Calculo que esto debe tener un trasfondo relacionado con el registro de Windows y/o instalaciones/reinstalaciones de Firebird como mensionó Hernan anteriormente, así que bueno.. quedará para experimentar mas adelante sin dispongo de alguna otra máquina.
Les agradezco y valoro enormemente el apoyo y la ayuda que me han dado.

Un saludo grande,
Javier.

Antonio Meza

unread,
Jan 6, 2017, 11:21:05 AM1/6/17
to Comunidad de Visual Foxpro en Español
Desde luego que tiene que ver con una instalación previa de firebird servidor, puedes crearte una maquina virtual donde no instales firebird, de hecho el ejemplo de walter lo probé antes de instalar firebird y me funciono, para que te funcione lo debes correr con privilegios de administrador para que pueda registrar el driver odbc si no lo haces así no va a funcionar.

saludos
Antonio Meza

mapner

unread,
Jan 6, 2017, 7:50:29 PM1/6/17
to Comunidad de Visual Foxpro en Español
Ultraton500,

en mi caso, bajé la versión Embedded desde www.firebirdsql.org , luego extraje el FBEMBED.DLL y lo copié en la carpeta donde corre mi aplicación VFP, a la vez instalé el ODBC de Firebird, usar el siguiente string de conexión 
DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=C:\database\myDB.fdb;CLIENT=FBEMBED.DLL
, y listo

Ultraton500

unread,
Jan 8, 2017, 3:23:11 AM1/8/17
to Comunidad de Visual Foxpro en Español
Bueno!!!.. usando el string que muestra mapner finalmente pude conectarme estando el servidor Firebird detenido, es decir usando el Embedded.
Lo que hice entonces fue desinstalar el Firebird, desinstalar el odbc, desresregistrar la odbcfb.dll y empezar a hacer pruebas. Así llegué a la conclusión de que el motor Embedded funciona tanto con la librería odbcfb.dll (registrada con REGSVR32) como con el odbc de Firebird (que al instalarlo registra la odbcfb.dll) y con el parámetro "CLIENT=" en la cadena de conexión.

Lo desconcertante de todo esto es que en la documentación oficial de firebird.org no se menciona para nada la necesidad de registrar la librería odbcfb.dll o instalar el odbc de Firebrd ni tampoco habla de indicar, en el string de conexión, la librería fbembed.dll o fbclient.dll con "CLIENTE=" siendo que sin este parámetro la conexión (al menos en mi caso) no es posible. También es llamativo que en el string del ejemplo de Walter no se hace referencia a la librería fbembed.dll o fbclient.dll.

Pero bueno, lo importante es que por fin pude hacer funcionar el motor Embedded.

Les agradezco a todos una vez mas.
Saludos cordiales,
Javier.

mapner

unread,
Jan 8, 2017, 6:22:48 AM1/8/17
to Comunidad de Visual Foxpro en Español
U500,

Que bien que pudiste conectarte! 
Una observación, no es necesario desinstalar el motor Firebird Cliente Servidor para poder usar Embedded, el tema a tener en cuenta es no acceder a la misma base de datos en forma dual, o sea, accederla C/S y a la vez por Embedded. El acceso por Embedded es para uso exclusivo y monousuario de una aplicación a la vez.

Saludos

Esteban H.

unread,
Jan 8, 2017, 10:57:59 AM1/8/17
to publice...@googlegroups.com

Agrego algo mas mapner, no es necesario tener instalado el Odbc, sólo registrarlo p su uso.

Hace 2 años tengo un programa en un Pen-drive q usan mis compañeros de trabajo con una base de datos de usuarios de Telefonía e Internet, y sólo tienen el exe y las librerías de FB + ODBC y al ejecutarlo registro el odbc y funciona en cualquier pc q lo utilicen.

 

Saludos

 

Esteban

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de mapner


Enviado el: domingo, 08 de enero de 2017 08:23 a.m.
Para: Comunidad de Visual Foxpro en Español

Antonio Meza

unread,
Jan 8, 2017, 12:37:01 PM1/8/17
to Comunidad de Visual Foxpro en Español, er...@yahoo.com.ar
agregarlo o registrar el odbc no es lo mismo? jejeje

saludos
Antonio Meza

mapner

unread,
Jan 8, 2017, 5:55:08 PM1/8/17
to Comunidad de Visual Foxpro en Español
Hola Esteban,

Instalar el ODBC o registrar las DLL es lo mismo.

Saludos

HernanCano

unread,
Jan 8, 2017, 7:36:51 PM1/8/17
to Comunidad de Visual Foxpro en Español
Antonio, Esteban y Mapner:

Es verdad que las palabras "instalar" y "registrar" aquí expresadas pueden ser consideradas lo mismo.

Lo que debe entenderse es que VFP nos ofrece la posibilidad de "registrar" una DLL (desde VFP evidentemente) sin tener que ejecutar el instalador (tipo INSTALL.EXE o SETUP.EXE) ni "regtistrarlo" vía REGSVR32.EXE de Windows.

Considero que a éso es a los que s e refiere Esteban.

Muy probablemente la app de pen-drive que menciona Esteban no ha sido ejcutada en un computador con FireBird ya instalado, pues en mi caso así fue: hace varios años ejecuté el ejm de Walter en mi PC y funcionaba como se debe; en algún momento instalé un programa contable de amplio uso en Colombia que usa FireBird; cuando posteriormente intenté nuevamente retomar FireBird... ya no me quería funcionar.... después de varias semanas llegué a la conslusión que la versión de Firebird que usaba el programa contable interfería con lo que yo quería hacer.... y me resigné a no usarlo... en algún momento decidí mirar en el registro de Windows y encontré varias partes donde estaba FireBird... tomando en cuenta que el uso/abuso del registro de Windows es perjudicial ("no hagas ésto en casa", "sólo puede ser ejecutado por profesionales") me dí a la tarea de eliminar todo lo que hubiera de FireBird.... y sólo así pude ejecutar nuevamente el FireBird en mis app VFP.... y el programa contable no se afectó: funciona bien como debe....

Por eso es que lo menciono: es la experiencia que tuve.

Sin embargo, Walter en su portal indica que sí se pueden "usar Servidor y embedded al mismo tiempo" https://firebird21.wordpress.com/?s=embedded. T3e recomiendo que leaslos artículos para que puedas usar/aplicar adecuadamente en tu escenario.

En mis búsquedas no encontré información sobre el parámetro "CLIENT=algoaqui.dll", de hecho nunca lo había visto.

--------------------------------------------------------------


El domingo, 8 de enero de 2017, 17:55:08 (UTC-5), mapner escribió:
Hola Esteban,

Instalar el ODBC o registrar las DLL es lo mismo.

Saludos

HernanCano

unread,
Jan 8, 2017, 7:39:01 PM1/8/17
to Comunidad de Visual Foxpro en Español
Javier:
Me interesa aplicar adecuadamente los motores embedded.

>>>...  Así llegué a la conclusión de que el motor Embedded funciona tanto con la librería odbcfb.dll (registrada con REGSVR32) como con el odbc de Firebird (que al instalarlo registra la odbcfb.dll) y con el parámetro "CLIENT=" en la cadena de conexión. ...

¿Dónde encontraste una referencia tan precisa para concluir que el embedded requiere CLIENT=...?

Ultraton500

unread,
Jan 9, 2017, 1:11:05 AM1/9/17
to Comunidad de Visual Foxpro en Español
Así es mapner. Solo desinstalé todo para hacer pruebas mientras lo volvía a instalar. En cuanto a no acceder de forma dual.. me imagino que también habrá que tomar precauciones al acceder con herramientas como IBExpert, SQLManager, FlameRobin, etc. (si no me equivoco).

Saludos cordiales,
Javier.

Ultraton500

unread,
Jan 9, 2017, 1:27:33 AM1/9/17
to Comunidad de Visual Foxpro en Español
Hola Hernan, la única referencia de "CLIENT=xxxx.dll" es la que me dió mapner y pude comprobar repetidas veces y en dos máquinas distintas que sin ese parámetro la conexión a la db solo se realiza cuando el servidor Firebird c/s se encuentra iniciado. Si detengo el servidor Firebird c/s no me puedo conectar a menos que agregue ese parámetro en el string. Y a mi también me pasó lo mismo... no encontré referencia alguna, es mas, encontré strings para Embedded en donde ese parámetro no aparecía, por lo que sería interesante saber cómo lo obtuvo mapner.

Saludos cordiales,
Javier.

Esteban H.

unread,
Jan 9, 2017, 1:24:35 PM1/9/17
to publice...@googlegroups.com
Ok, aclarado.
Yo tomo la palabra instalar como ejecutar la aplicación Odbc.exe q viene en FB y dejar instalada la librería y en el caso de registrar q es lo q mencionaba, en mi ejecutable VFP, veo si la librería ya existe registrada, caso contrario la registro y al salir quito el registro.
Estábamos hablando de lo mismo con distintos términos, así q nada p decir.

Saludos

Esteban.

-----Mensaje original-----
Enviado el: domingo, 08 de enero de 2017 07:55 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: RE: [vfp] Firebird Embedded

mapner

unread,
Jan 9, 2017, 4:00:48 PM1/9/17
to Comunidad de Visual Foxpro en Español, er...@yahoo.com.ar
Esteban,

la instalación se puede hacer invocando el ejecutable de instalación de ODBC de Firebird desde VFP con los agregados de /NOICONS /VERYSILENT 
Esto hace que se instale en forma directa sin interfaz gráfica.

El siguiente código instala el ODBC de FB en forma invisible al usuario 

cExe = "C:\Mis Drivers\Firebird_ODBC_2.0.3.154_Win32.exe"
o = CREATEOBJECT("WSCRIPT.SHELL")
cCmd = cExe+" /NOICONS /VERYSILENT"
o.RUN( cCmd , 0, .F.)


Saludos

Ultraton500

unread,
Jan 17, 2017, 2:28:50 AM1/17/17
to Comunidad de Visual Foxpro en Español
Como para enriquecer este tema y considerando posibles futuras consultas pego a continuación la respuesta que he recibido de Walter en el foro de su blog luego de que le indicara la cadena con la que he podido conectarme usando el motor embebido (DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DATABASE=C:\sistema\database.fdb; CLIENT=fbembed.dll):


La cadena de conexión que escribiste es propia del ODBC. Lo que hace es enviar los parámetros al driver que hayas especificado y que previamente debe estar instalado/copiado en la computadora. Es el driver ODBC quien realmente realiza la conexión.
Hay drivers ODBC para Firebird, para Postgre, para Oracle, y para todos los demás motores SQL.
No es obligatorio usar un driver ODBC, también podrías usar ADO, DAO, Jaybird, JDBC, o algún otro.
Cuando usas Firebird incrustado (o sea, embedded) con ODBC, es obligatorio escribir el parámetro CLIENT. Es por ese motivo que debiste escribirlo cuando usaste la librería ODBCFB.DLL
Los parámetros de ODBC que puedes usar son:

DSN
Description
Driver
Database
Client
User
Password
Role
Character Set

Los requeridos son: Driver, Database.  Client es solamente requerido cuando usas Firebird embedded ¿Por qué? Porque así el driver ODBC sabe que quieres usar la versión embedded y no la versión Client/Server que también podrías tener instalada en tu computadora. User y Password no son requeridos. Si no los especificas, cuando quieras conectarte verás una ventanita donde se te pedirá que los introduzcas.


Saludos,
Javier.
Reply all
Reply to author
Forward
0 new messages