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)
-   -   conexion por red con firebird (https://www.clubdelphi.com/foros/showthread.php?t=14669)

noe 28-09-2004 00:18:38

conexion por red con firebird
 
He mandado mensajes y veo que ya no me responden, porfavor les pido su ayuda, me quiero conectar por medio de la red desde una maquina cliente a la que hace las veces de servidor, utilizando firebird 1.5.

que tengo que instalar en las maquinas cliente, para poder acceder al archivo de base de datos que esta en el servidor, utilizo los componentes IBTransaction y IBDatabases de delphi 5, y para crear las tabla uso el IBExpert.
Ya copie el archivo fbclient.dll en la maquina cliente en la carpeta system32 y nada.
Gracias!
atte noe :(

defcon1_es 28-09-2004 12:47:41

Hola,
no dices que te ocurre, ni si te da algún error de conexión...

¿Qué valor (ruta de la BD) pones en la propiedad DatabaseName del componente TIBDataBase?

guillotmarc 28-09-2004 12:49:22

Hola.

La forma correcta de hacerlo, es instalando el cliente de Firebird. Es decir utilizar el instalador de Firebird, y durante la instalación indicar que se quiere instalar el cliente (y no el servidor como se hace por defecto).

Aunque te puede funcionar copiando solo los archivos fbclient.dll y gds32.dll, si no haces la instalación completa, te encontrarás con detalles como el que no tengas las descripciones de los errores que puedan saltar, ...

Saludos.

noe 28-09-2004 16:15:01

como refrescar los cambios
 
Ya lo hice buscando en los foros antiguos el de Giniromero:
Lo que hice fue, hacer doble click sobre mi transacción y ponerma en "ReadCommitted"

Después, todas mis tablas las vinculé con los siguientes dos procedures en eventos:

*Events --> AfterPost


procedure TForm1.TableAfterPost(DataSet: TDataSet);
begin
IBTransCenta.CommitRetaining;

end;


*Events --> AfterCancel


procedure TFrmMainCenta.TableAfterCancel(DataSet: TDataSet);
begin
IBTransCenta.RollbackRetaining;

end;

pero como hago para refrescar los cambios que se estan haciendotanto en el cliente como en el servidor, en paradox era con refresh y actualizaba la pantalla con los cambios que se habian hecho en otras maquinas, como lo hago con los componentes IBTransaction y IBDatabase, utilizo un IBTable para enlazarme a las tablas.

gracias! :(

noe 28-09-2004 16:20:01

perdon!
 
Se me habia olvidado comentarles que ya me pude conectar desde la maquina cliente al servidor creando una conexion a una unidad de red es decir:
H:\Aplicacion\datos esto lo tengo en la propiedad Databasename del componente IBDataBase.
hay una mejor forma.?
gracias
ha tambien les agradecere me puedan ayudar en mi pregunta anterior de este mismo hilo
gracias!

guillotmarc 28-09-2004 17:21:56

Hola.

Debes quitar esa unidad de Red. La base de datos del Servidor no tiene que estar compartida de ninguna forma. Solo debe poder acceder a ella el Servidor. (Probablemente tienes instalado un Servidor de Interbase en el Cliente, y está abriendo directamente la base de datos, lo que solo puede llevar a que se corrompa rapidamente la misma).

La forma correcta de acceder a la base de datos desde el cliente, es mediante una cadena de este tipo :

Nombre_Servidor:Ruta_local_en_el_servidor\Nombre_Base_de_Datos

Es decir, algo como :

SERVER200:C:\Datos\Clientes.gdb

Respecto a la pregunta sobre como ver los datos introducidos desde otras estaciones, simplemente se hace con un Refresh sobre el IBTable (igual que hacias con Paradox). Aunque tendrás que cambiar tus CommitRetaining por Commit, puesto que el CommitRetaining no finaliza realmente la transacción.

Saludos.

noe 28-09-2004 19:20:47

Perdon Marc. El programa que rengo en mi maquina cliente es el firebird 1.5 pero cuando lo instale, no me dio ninguna opcion para instalarlo como cliente; y en mi maquina cliente en donde le doy la ruta que dices para que apunte a donde esta la base de datos que esta en el servidor. Pregunto, mi programa debe estar en la maquina cliente tambien, es decir el puro ejecutable o que cosa debo hacer, la verdad ya me estoy enredando y me gustaria que me lo explicaras un poco mejor, te agradezco tu ayuda, ya que veo que sabes bastante.


Gracias :)

noe 28-09-2004 19:23:24

Ah, utilizo para conectarme un IBDatabase, un IBTransaction, y un IBTable.
como tiene que estar configurados estos para que funcionen en red.?
gracias.
Es que ya hice lo que me dijiste Marc, pero nadaahora esta peor porque ni siquiera puedo entrar al sistema que esta en el servidor.
gracias

guillotmarc 28-09-2004 20:31:05

Hola.

Vayamos por partes :

Cita:

Empezado por noe
Perdon Marc. El programa que rengo en mi maquina cliente es el firebird 1.5 pero cuando lo instale, no me dio ninguna opcion para instalarlo como cliente;

En ese momento no la habrás visto, así que seguramente lo mejor es que desinstales Firebird, y lo vuelvas a instalar. Verás como te va a preguntar el tipo de instalación a realizar (Completa, solo Cliente, ...).

NOTA : Utiliza el instalador oficial de Firebird 1.5, es decir el que puedes encontrar aquí. http://prdownloads.sourceforge.net/f...4481-Win32.exe

Cita:

Empezado por noe
y en mi maquina cliente en donde le doy la ruta que dices para que apunte a donde esta la base de datos que esta en el servidor.

En la propiedad Databasename de tu objeto IBDatabase.

Cita:

Empezado por noe
Pregunto, mi programa debe estar en la maquina cliente tambien, es decir el puro ejecutable o que cosa debo hacer,

No es necesario, puedes poner el ejecutable en el Servidor, en un recurso compartido, y lanzarlo desde el cliente. Puesto que solo precisas tener el Cliente de Firebird instalado.

Cita:

Empezado por noe
Gracias :)

Un placer.

Saludos.

ozegarra 13-03-2008 16:27:39

Hola Guillormarc, veo que tienes bastante experiencia y conocimiento de Delphi y Firebird. Agradeceria me puedas ayudar.

Estoy tratando de poner mi aplicativo en clientes, teniendo como servidor mi pc.

Para conectarme a la bd desde delphi utilizo un adoconnection al cual le asigno la ruta donde esta la bd en la cadena de conexion de esta manera:

ADOConnection1.ConnectionString :='Provider=IBOLE.Provider.v4;Persist Security Info=False;Data Source=SERVIDOR:C:\Clientes.gdb'

Si instalo la aplicacion en mi pc (Servidor) no hay ningun problema pero al querer ejecutar en la pc cliente me da este error:

"Unable to complete request to host SERVIDOR.
Failed to establish a connection.
Se produjo un error durante el intento de conexion ya que la parte conectada no respondio adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexion establecida ya que el host conectado no ha podido responder."

¿Podrias ayudarme a solucionar este problema?, te lo agradeceria muchisimo.

Saludos
Oscar

sur-se 14-03-2008 11:21:32

Hola.
Añade una línea en el fichero hosts de esa máquina (si es windows XP está en c:\windows\system32\drivers\etc) en el que se indique la ip de la máquina "SERVIDOR".
Eso es suficiente para que encuentre la máquina "SERVIDOR" y conecte con ella.
A parte de eso, comprueba que tu firewall (si lo tienes) no esté bloqueando el puerto 3050 / tcp.
Un saludo.

ozegarra 14-03-2008 14:41:17

gracias sur-se.

Esto es lo que contiene ese fichero

# Copyright (c) 1993-1999 Microsoft Corp.
#
# Éste es un ejemplo de archivo HOSTS usado por Microsoft TCP/IP para Windows.
#
# Este archivo contiene las asignaciones de las direcciones IP a los nombres de
# host. Cada entrada debe permanecer en una línea individual. La dirección IP
# debe ponerse en la primera columna, seguida del nombre de host correspondiente.
# La dirección IP y el nombre de host deben separarse con al menos un espacio.
#
#
# También pueden insertarse comentarios (como éste) en líneas individuales
# o a continuación del nombre de equipo indicándolos con el símbolo "#"
#
# Por ejemplo:
#
# 102.54.94.97 rhino.acme.com # servidor origen
# 38.25.63.10 x.acme.com # host cliente x

127.0.0.1 localhost


siguiendo lo que me recomendaste, agregue al final esto:
192.168.0.10 SERVIDOR

pero me sigue saliendo el mismo mensaje. Te agradeceria si eso es a lo que te referias o estoy haciendo algo mal.

Muchas gracias nuevamente.

Saludos
Oscar

sur-se 17-03-2008 09:27:17

Hola. Efectivamente, siempre suponiendo que el fichero hosts que has modificado es el de la máquina cliente.
El esquema que tendrás es una máquina servidora ejecutando el firebird server, que se llama SERVIDOR y con esa ip. Se supone que en esa máquina, si tiene firewall, está abierto el puerto 3050.
La máquina cliente debe tener modificado el fichero hosts para añadir la línea que te indiqué.
Si todo es así, y has comprobado que el servicio Firebird se está ejecutando en la máquina SERVIDOR, debe funcionarte sin problemas.

Sólo una cosa. Si usas eventos de firebird, deberás abrir también el puerto que hayas asociado a dichos eventos, el cual es configurable.

Si sigue sin funcionar, prueba primero ha hacer un ping desde la máquina cliente a la servidora para ver si la encuentra. A ver si el problema es de conexión de red.

Un saludo.


La franja horaria es GMT +2. Ahora son las 10:16:30.

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