Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2010
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 14-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 14-05-2010 a las 18:39:35.
Responder Con Cita
  #3  
Antiguo 14-05-2010
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 14-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 14-05-2010
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
HOLA guillotmarc eso es lo que andaba buscando men saludos y muchas gracias
Responder Con Cita
  #6  
Antiguo 04-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Wink

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
Responder Con Cita
  #7  
Antiguo 04-06-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 04-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Marc gracias, incluire el instalador del Firebird en mi instalación y de modo silencioso.

Gracias de nuevo
Responder Con Cita
  #9  
Antiguo 04-06-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar un click a cualquier aplicacion? Alejo15x Varios 1 14-03-2010 12:20:39
Abrir cualquier tipo de archivo desde mi aplicación Albano Varios 3 06-10-2006 20:48:31
Abrir cualquier documento Ivan_25 C++ Builder 11 03-11-2005 10:46:52
aplicacion en cualquier PC Jorghino reyes Varios 5 29-08-2005 05:04:15
Minimizar Aplicacion desde cualquier form bustio OOP 3 17-06-2004 18:03:35


La franja horaria es GMT +2. Ahora son las 10:31:17.


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
Copyright 1996-2007 Club Delphi