PDA

Ver la Versión Completa : El tipico tema de gds32.dll


Trigger
27-10-2004, 16:30:22
Saludos Delphieros,

Les escribo para hacer una tipica pregunta que deberia ser un post cuando alguien entre a este subforo (para los administradores), que dll tengo que tener para que mi programa "cliente" de firebird corra en cualuquier PC Win98+,

Estuve buscando en el foro y encontre una guia de firebird.mx, que desde la version 1.5 firebird cuando lo instalas trae un .exe llamado instclient.exe en la carpeta bien, segun lei, instala la libreria cliente fbclient.dll y hace una copia renombrada de gds32.dll, para que no haya conflicto con interbase.

Pero aparte de esto, creo que lo instala bien (instclient i[nstall] f[bclient.dll]), pero me sale unavailable database ...

Aparte de copia la gds32.dll y fbclient.dll en el directorio de la aplicacion y en system32 manualmente que otras cosas hay que hacer

Gracias

athlontado
27-10-2004, 17:21:53
Hola, "Disparador", jeje ;)

"unavailable database" tiene que ver con que no encuentra la BBDD en la ruta que tú le especificas cuando ejecutas la aplicación. Revisa eso primero, no sea que te hayas pasado algo por alto (como que te falte poner la IP del servidor, por ejemplo).

De todas formas, hay veces que, según el S.O. y las aplicaciones instaladas, necesitarás las siguientes DLLs a mayores: msvcp60.dll y msvcrt.dll
Son las bibliotecas del Visual C++, con el que se compiló el FB.
FireBird suele traer esas DLLs en la carpeta ..\bin del servidor para Win, cópialas en la carpeta de los clientes donde tengas instalada tu aplicación.

Espero haberte ayudado en algo.

Saludos ;)

Trigger
27-10-2004, 18:09:05
Tal vez no me entendies athlontado ...

Estoy trabajando con delphi, la ruta esta bien ya que corro el programa desde delphi y funciona o corro el .exe y funciona, pero al cerrar el fbguard no me sirve ni desde delphi, ni corriendo el .exe, lo que necisto saber exactamente es que dll necesita firebird para que mi programa cliente se ejecute en otro pc y donde pongo esas dll?

Gracias por resporder

athlontado
27-10-2004, 18:23:32
Me parece que hay algo que no debes de tener muy claro.

Si cierras el fbguard, es decir, cierras el servidor de FB, no hay forma de acceder a los datos ya que no hay servidor que los sirva. A no ser que accedas con el Firebird embebido, usando la DLL fbembed.dll renombrándola a fbclient.dll ó gds32.dll, según el caso, lo cual te permitirá acceder a una BBDD almacenada en local ó en otro servidor FB que esté activo en la red.

Espero haberme explicado esta vez. Si hay algo más, ya sabes ...
Saludos ;)

Trigger
27-10-2004, 20:12:33
Saludos viejo y muchas gracias por tu respuesta, obviamente si cierro el fbguard no puedo acceder a los datos, por que si fuera asi me tocaria instalar el firebird en cada computador donde fuera a estar instalando el programa, pero ya veo que resolviste mi duda con lo de fbembed.dll,
La pregunta ultima es
¿La dll renombrada donde la encuentro y donde la guardo en la carpeta del programa o en system32?

Gracias

athlontado
28-10-2004, 09:29:05
Bien, ahora nos entendemos :D.

El Firebird embebido lo puedes obtener desde SourceForge.net (http://prdownloads.sourceforge.net/firebird/Firebird-1.5.1.4481_embed_win32.zip)

Yo pienso que es aconsejable guardar la dll en la misma carpeta de la aplicación, por si algún día, en alguna de esas máquinas se instala otra versión de FB/IB, que la aplicación siga funcionando con la dll para la que fue diseñada. Claro que no es más que una opinión.

Saludos ;)

Trigger
29-10-2004, 15:48:18
Esta es la situacion

1. Utilizo Delphi 7
2. Ningun Componente Visual de Base de Datos
3. Solo 1 Connection, 2 TSQLQuery, 2 DataSource
4. En mi equipo instale Firebird 1.5.1
5. Utilizo el IBManager para crear y modificar la base datos (manual)
6. La maquina(s) donde voy a instalar el programa es un simple y mortal pc, donde solo hay instaldo windows (98+) y office, osea tipo usuario normal
7. el programa no va a trabajar en red ni nada por el estilo, solo cliente (por eo lo llamo asi cliente)


Situacion anterior
Utilizaba Builder 6 y Access, obviamente en el instalador instalaba el BDE y agregaba el alias del ODBC y funcionaba perfecto.

Situacion actual
Utilizo Delphi y firebird.
La pregunta es que tengo que hacer para que mi programa cliente funcione en cualquier pc.

He tratado

Copiar gds32.dll y fbclient.dll (system32 y directorio del prog cliente)

Ejecutar instclient.exe, que trae firebird desde la version 1.51 (lo que hace es copiar el fbclient o gds32 a system32 de manera adecuada y comprobando sus antecesores)

Renombrar fbembed.dll a fbclient.dll y copiar en system32 y directorio de app y no funciona

Notas

La ruta de la base de datos en el connection la hago dinamica y la compruebo con un msgbox cada que inicia y esta perfecta

Gracias
QUe al guien me ayude me va tocar instalar firebird en cada pc que instale mi programa?, nooooooooooooooo
:( :confused: :( :confused:

athlontado
29-10-2004, 16:28:31
Vaaale, ya te he entendido, Trigger.

Tienes que eliminar el paso en el que copias fbclient.dll y gds32.dll, en este caso no son necesarias, puesto que sólo sirven para dar acceso a un servidor FB. Por lo tanto, tienes que borrar esas DLLs de la máquina cliente, incluso si están en la carpeta SYSTEM de Win9x.

Lo que tú necesitas es únicamente fbembed.dll, lo copias en la carpeta de la aplicación (sólamente ahí) y lo renombras a gds32.dll (supongo que usas los componentes IBX). La ruta de la base de datos que uses para conectarte a la misma, debe ser una ruta local, sin IP ni nombre del servidor, del tipo: C:\micarpeta\bbdd.fdb

Si te sigue sin funcionar, prueba a hacer esto:

De todas formas, hay veces que, según el S.O. y las aplicaciones instaladas, necesitarás las siguientes DLLs a mayores: msvcp60.dll y msvcrt.dll
Son las bibliotecas del Visual C++, con el que se compiló el FB.
FireBird suele traer esas DLLs en la carpeta ..\bin del servidor para Win, cópialas en la carpeta de los clientes donde tengas instalada tu aplicación.


A ver si hay suerte ahora. ;)

athlontado
29-10-2004, 16:34:23
Cagüenlaleche :mad:, mira que pasarme por alto que usas dbExpress, no IBX.

¿Es correcto?. Por que si es así, todavía tienes que copiar otra DLL que es dbexpint.dll, que está en la carpeta ..\bin donde está instalado el Delphi.
Pon esa DLL también en la carpeta donde instales tu aplicación.

Y recuerda; un ordenador funcionando con una BBDD en modo local NO es un cliente, al menos de un servidor de BBDD. Un PC cliente es cuando depende de un servidor para poder funcionar, aunque la aplicación servidora esté instalada en la misma máquina.

Venga, lo dicho, que te vaya bonito.

Trigger
29-10-2004, 16:38:49
No utilizo ningun componente VISUAL de base de datos,

Como mencione anteriormente un TConnection, TSQLQquery, TDataSource y listo, viejo

athlontado
29-10-2004, 16:43:19
Perdona, Trigger. Me contestaste mientras corregía el post anterior.

Lee el post nº9, por favor. Y perdona las molestias.

Trigger
29-10-2004, 16:49:52
¿Es correcto?. Por que si es así, todavía tienes que copiar otra DLL que es dbexpint.dll, que está en la carpeta ..\bin donde está instalado el Delphi.

a tambien la copie y no funciona, por favor perdona mi tremenda ignorancia pero podrias explicarme desde el principio como

Tienes que copiar dbexpint.dll a la carpeta de tu aplicacion
Tienes que copiar .....

Por que de tantas cosas me he confundido totalmente

Te hago una aclaracion por si acaso, me sale unavaliable database no por que tenga la ruta mal si no por las dll, ya que la ruta la asigno dinamicamente, y al encender el fbguard, funciona bien y al apagarlo no funciona, Osea que no tengo las dll que necesito en mi acrpeta de aplicacion

Otra pregunta tengo que agregas algun tipo de alias o algop asi

athlontado
29-10-2004, 18:05:32
Vamos por el principio, ya sabiendo con exactitud lo que quieres ...

Supongamos que la palabra carpeta se refiere a la carpeta donde está tu aplicación.

1º) Borra las DLLs fbclient.dll, gds32.dll que tengas en la carpeta
2º) Copia fbembed.dll en dicha carpeta
3º) Renombra fbembed.dll a gds32.dll
4º) Por si acaso, copia msvcp60.dll y msvcrt.dll desde ..\Bin, donde está instalado FireBird en carpeta
5º) Copia dbexpint.dll en carpeta, es el driver de dbExpress para acceder a FireBird.
6º) CORREGIDO: Copia midas.dll en carpeta, necesaria para TClientDataSet

Falta ver cómo realizas la conexión dentro de tu aplicación.
Voy a probar éste caso concreto y ya te comento si falta algo más.
De momento, prueba a ver si con eso te va.

Suerte, chaval.

athlontado
29-10-2004, 18:15:38
Esto nos pasa por no mirar la ayuda de Delphi :(.
Buscando dbExpress database applications:deploying, encontré lo siguiente:

To deploy dbExpress applications as stand-alone executable files, the dbExpress object files must be statically linked into your executable. You do this by including the following DCUs, located in the lib directory:

dbExpress deployment as stand-alone executable
Database unit When to include
dbExpINT Applications connecting to InterBase databases
(...)
MidasLib Required by dbExpress executables that use client datasets such as TClientDataSet

Note
(...)

If you are not deploying a stand-alone executable, you can deploy associated dbExpress drivers and DataSnap DLLs with your executable. The following table lists the appropriate DLLs and when to include them:

dbExpress deployment with driver DLLs
Database DLL When to deploy
(...)
dbexpint.dll Applications connecting to InterBase databases
(...)
Midas.dll Required by database applications that use client datasets

Por lo que nos falta también midas.dll ... :eek:, ya que usas el componente TClientDataSet.

Si te sigue sin funcionar, dílo ...

Mick
29-10-2004, 20:56:03
Solo comentar que es preferible poner un:
uses MidasLib;
en las units que accedan a la base de datos, esto hace que no sea necesario utilizar midas.dll, ya que se incluye en el propio ejecutable.

Adicionalmente si se usa el firebird embeded , hay que tener en cuenta que la aplicacion se convierte en monopuesto y monousuario, no se podra utilizar la base de datos desde otros puestos, ni varias aplicaciones en el mismo puesto podran acceder a la misma base de datos.

Saludos