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)
-   -   Abrir aplicación con bd Firebird en cualquier PC (https://www.clubdelphi.com/foros/showthread.php?t=67932)

gulder 14-05-2010 17:59:35

Abrir aplicación con bd Firebird en cualquier PC
 
hola foreros como andan espero que bien, bueno vamos al grano tengo una aplicación en Delphi 7 y Firebird-2.5.0.25920_0_Win32_RC2 hasta hay todo bien, guarda, actualiza y elimina perfecto, ahora bien cuando intento llevar mi aplicación a otra maquina me sale lo siguiente

Interbase library gds32.dll not found in the path

Entonces buscando por internet me baje la susodicha dll y la copie y pegue en la siguiente dirección

C:\WINDOWS\system32

Intento ejecutar el programa y naranjas tampoco funciona
Ahora sale “Failed to establish a connection”



Leyendo por hay en internet encontré que había que instalar la versión cliente de Firebird, la instale la cual viene con el mismo instalador que estoy utilizandpo osea Firebird-2.5.0.25920_0_Win32_RC2 y nada todavía sigue el mismo error.


También lei en internet que en el cliente solo basta con tener la libreria FBClient.dll en la misma carpeta de la aplicacion. Agregue esta dll ala carpeta de mi aplicación y naranjas no conecta


entonces mi pregunta como puedo correr en otra pc mi aplicación con la base de datos en Firebird sin necesidad de instalar el servidor de Firebird o que archivos necesita mi aplicación para lograr esto, es como si la base de datos fuera portable a cualquier maquina ..

Nota para conectarme utilizo lo siguientes componentes

TibDatabase


Código Delphi [-]
  
DB.DatabaseName := '127.0.0.1:' + ExtractFilePath(ParamStr(0))+'LOGULA.FDB';
  DB.Params.Add( 'user_name=SYSDBA' );
  DB.Params.Add( 'password=masterkey' );
  DB.SQLDialect := 3;
  DB.LoginPrompt := False;

  try
  DB.Open;
  except
   raise Exception.Create( 'No puedo conectar con INTERBASE/FIREBIRD.' + #13 + #13 + 'Consulte con el administrador del programa.' );
  end;


gracias de antemano guldergan

guillotmarc 14-05-2010 18:33:10

Hola,

La librería cliente es fbclient.dll, y la puedes encontrar en C:\Archivos de Programa\Firebird\Firebird_2_5\bin en la máquina donde tienes instalado Firebird.

Tu programa espera que tenga el nombre antiguo gds32.dll, por lo que tienes copiar la fbclient.dll a la carpeta de tu aplicación y renombrarla por gds32.dll.

Esto permitirá que tu programa pueda conectar a la base de datos. Pero aún tienes que decirle donde está la base de datos.

Esto ahora lo haces con esta línea:

DB.DatabaseName := '127.0.0.1:' + ExtractFilePath(ParamStr(0))+'LOGULA.FDB';

Pero esta línea solo funciona en el ordenador donde tienes instalado Firebird. Ya que estás indicando la IP de loopback (apunta a la misma máquina) y la ruta a la base de datos la pones basándote en la carpeta de ejecución del programa.

Para que funcione en otra máquina, tienes que cambiar el 127.0.0.1 por la dirección IP del ordenador donde está Firebird. Y tienes que cambiar ExtractFilePath(ParamStr(0))+'LOGULA.FDB'; por la ruta en que está la base de datos en el Servidor. Tienes que utilizar la ruta local en el servidor. Es decir, tiene que quedar algo como 192.168.0.24:C:\Archivos de Programa\Gestion\LOGULA.FDB. (No puedes utilizar carpetas compartidas, tiene que ser la ruta local en el Servidor. Es más, la base de datos ni siquiera es aconsejable que esté compartida).

NOTA: Además de la librería fbclient.dll (renombrada a gds32.dll), es posible que también necesites la msvcp80.dll y msvcr80.dll, que vas a encontrar en la misma carpeta del servidor. Estas librerías tendrás que copiarlas si el ordenador cliente no tiene instalado el Microsft C++ 8 RunTime

gulder 14-05-2010 18:47:58

Hola guillotmarc gracias por tu respuesta me aclaraste muchas dudas y me hiciste caer en cuenta que tenia varios errores concebidos y me saltan unas dudas
Yo no quiero que la aplicación mande datos al servidor, yo solo quiero que ella guarde en la base de datos que va con la aplicación ósea de manera local en cada maquina por eso es que al conectarme hago referencia con esta línea de código
Código Delphi [-]
ExtractFilePath(ParamStr(0))+'LOGULA.FDB';
Que la base de datos esta con mi aplicación y no quiero que se conecte al servidor por que no es el caso, entonces se ùede hacer lo que estoy tratando de hacer y si es asi como seria l conexión saludos y gracias de antemano

guillotmarc 14-05-2010 20:56:51

Hola.

Entonces tienes que instalar Firebird 2.5 en cada máquina, de esta forma cada máquina tiene su propio Servidor Firebird. Entonces copias la base de datos en todos los ordenadores, y cada uno trabaja con su base de datos y su Servidor Firebird locales (y no con la del servidor general).

Si lo haces de esta forma, la cadena de conexión que utilizabas sigue siendo válida.

DB.DatabaseName := '127.0.0.1:' + ExtractFilePath(ParamStr(0))+'LOGULA.FDB';

NOTA: Echale un vistazo al Firebird Embedded, te permite tener un mini-servidor Firebird en tu máquina local, sin necesidad de instalar nada (solo copiando unas cuantas librerías dll junto a tu aplicación). Por cierto en un Firebird Embedded la cadena de conexión no puede llevar el IP de loopback, ya que utiliza solo conexiones estrictamente locales, por lo que la cadena de conexión sería : DB.DatabaseName := ExtractFilePath(ParamStr(0))+'LOGULA.FDB';

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

Traducción automática : http://translate.google.es/translate...&sl=auto&tl=es

gulder 14-05-2010 20:58:15

HOLA guillotmarc eso es lo que andaba buscando men saludos y muchas gracias

JordiP 04-06-2010 13:56:41

Buenas señores, tengo un problema parecido, me explico:

Tengo un programa hecho por mi, que funciona perfectamente en CLIENTES que les instalo el "Firebird-2.1.3.18185_0_Win32.exe" y cuando intento ejecutar dicho programa desde otro PC (Terminal), es decir a travez de la RED local, ttambien funciona correctamente, pero cuando esto lo hago con un PC que no instalo el "Firebird-2.1.3.18185_0_Win32.exe" da error, dice que no puede conectar con la base de datos y que es rechazada la conexión.

Ya habia probado de utilizar el "Firebird-2.1.3.18185-0_Win32_embed", pero no me funciona. Teoricamente este EMBEDDED se copia, con la estructura de carpetas completa, en el PC del CLIENTE, en la carpeta de mi programa. Tambien he renombrado el fichero "fbclient.dll" por "gds32.dll".

Estoy convencido que falta algun fichero (dll) y que no esta en el EMBEDDED o que busca algun fichero que debe estar en windows\system32.

Mi duda esta en como he de hacer para instalar mi programa en el CLIENTE sin necesidad de instalar "Firebird-2.1.3.18185_0_Win32.exe"

Gracias a todos por su tiempo:D

guillotmarc 04-06-2010 14:28:47

Hola Jordi

El Firebird Embedded está diseñado para tener un miniservidor Firebird, no para conectar el cliente con el servidor (aunque en las últimas versiones creo que también le han añadido esta función).

Para que tu aplicación funcione en las máquinas clientes, sin necesidad de instalar el Servidor de Firebird, tienes que instalar el cliente de Firebird.

El Cliente de Firebird se instala con el mismo instalador que el servidor de Firebird, y en una de las pantallas de la instalación podrás elegir si quieres instalar el Servidor de Firebird (lo que venías haciendo hasta ahora) o el cliente.

A este instalador le puedes pasar los parámetros adecuados, para que se haga la instalación del cliente sin necesidad de seleccionar ninguna opción. De forma que lo puedas añadir al instalador de tu aplicación y todo se instale de forma transparent al usuario.

Si te vas a la carpeta donde se ha instalado Firebird, y miras la carpeta \doc, encontrarás un documento installation_scripted.txt donde te indica todos los parámetros que se le pueden pasar al instalador para hacer una instalación silenciosa.

Salutacions.

JordiP 04-06-2010 15:13:28

Marc gracias, incluire el instalador del Firebird en mi instalación y de modo silencioso.

Gracias de nuevo

mcs 04-06-2010 15:39:22

Hola,

Lo que yo hago es instalar junto a mis programas las DLL del Firebird embeded (gds32.dll, icuuc30.dll, icudt30.dll y icuin30.dll), las carpetas UDF y intl, y el fichero firebird.msg.

Esto me sirve para conectar en modo embeded (en la cadena de conexión no indico la dirección IP), o en modo cliente/servidor.

Tal como dice guillotmarc, las últimas versiones del Firebird embedded sirven para conectarse a un servidor Firebird.

Saludos,

Marc


La franja horaria es GMT +2. Ahora son las 05:33:05.

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