Conexion con Firebird
#1
Escrito 04 enero 2009 - 10:45
Viendo este tutorial de Egostar me pregunto:
El componente IBDatabase es el que contiene la dirección de esta.
Cuando se hace el ejecutable queda grabada en el programa.
Que pasa si la base de datos se cambia de directorio?.
Se puede enlazar por internet?.
Saludos
#2
Escrito 04 enero 2009 - 10:47
SI
Salud OS
#3
Escrito 04 enero 2009 - 10:49
Hola
Viendo este tutorial de Egostar me pregunto:
El componente IBDatabase es el que contiene la dirección de esta.
Cuando se hace el ejecutable queda grabada en el programa.
Que pasa si la base de datos se cambia de directorio?.
Se puede enlazar por internet?.
Saludos
Asi es si queda grabada en el ejecutable pero es una propiedad que puedes cambiar facilmente.
if IBDatabase1.Connected then IBdatabase.Close; IBDatabase.DatabaseName := //nueva Ruta de la base de datos (IP:Directorio)
Y con lo de acceder por internet tambien se puede solamente es de manejar correctamente el ruteo el puerto 3050 y listo.
#4
Escrito 04 enero 2009 - 10:54
Ya en serio
Yo normalmente utilizo la conexión "remota" aun cuando la base de datos esté en la misma máquina, me parece lo mas adecuado, tal vez estoy mal, pero no he tenido ningún problema hasta este momento.
Yo uso el registro para incluir los datos de la base, tal como tú lo haces con tus programas en Access utilizando archivos INI.
En el evento OnCreate de mi programa hago esto.
procedure TFMenu.FormCreate(Sender: TObject); begin { Obtiene Parametros de Comunicacion a Base de Datos } FIniFile := TRegIniFile.Create(); FIniFile.RootKey := HKEY_LOCAL_MACHINE; RutaBase := FIniFile.ReadString('Software\STarADM\DATA', 'DataBasePath', ''); RutaBaseBackup := FIniFile.ReadString('Software\STarADM\DATA', 'BackupBDPath', ''); Servidor := FIniFile.ReadString('Software\STarADM\DATA', 'Server', ''); Protocolo := FIniFile.ReadInteger('Software\STarADM\DATA', 'Protocol', 0); FIniFile.Free; end;
y en el DataModule hago esto:
procedure TDataModule1.DataModuleCreate(Sender: TObject); begin case FMenu.protocolo of 0: IBDatabase1.DatabaseName := FMenu.Servidor+':'+FMenu.RutaBase; 1: IBDatabase1.DatabaseName := '\\'+FMenu.Servidor+'\'+FMenu.RutaBase; end; try IBDatabase1.Open; except ShowMessage('Hubo un error al inicializar la conexión con la base de datos.'#13+ 'Verifique que los datos de acceso a la base sea la correcta'#13+ 'en el menu Herramientas->Configuración'#13+ 'Después de modificar los datos, reinicie esta aplicación.'); end; end;
Para la parte de Intenet, pues solo tienes que tener tu servidor alcanzable desde Internet y abrir el puerto TCP 3050.
Salud OS
#5
Escrito 04 enero 2009 - 10:58
Casualmente pense en el INI y me quedo la duda de si se podia usar en firebird a IB, veo que si.
No entiendo muy bien todavia la parte de internet.
Donde coloco la ip?, no veo donde.
Saludos
#6
Escrito 04 enero 2009 - 11:02
por ejemplo
Servidor = 'LAPTOPX' ó '192.168.0.1',
RutaBase = 'C:\Programa\Base\Base.FBD'
En la conexión con la base asignamos el DataBaseName de esta forma:
IBDatabase1.DatabaseName := FMenu.Servidor+':'+FMenu.RutaBase;
Lo cual tendrá esto
IBDatabase1.DatabaseName := 'LAPTOPX:C:\Programa\Base\Base.FBD';
ó
IBDatabase1.DatabaseName := '192.168.0.1:C:\Programa\Base\Base.FBD';
Esto es usando el protocolo TCP
Salud OS
#7
Escrito 04 enero 2009 - 11:07
Osea:
Simplemente se le antepone la ip a la direccion y listo.
usando TCP.
Suena facil, lo probare.
Gracias.
Saludos
#8
Escrito 04 enero 2009 - 11:29
Para ello añadelo a la lista de excepciones del Firewall de Windows.
Tal como te han comentado, ese funcionamiento sirve para una red LAN.
Por el tema de Internet, suponiendo que deseas hacerlo desde "afuera", es un poquito más complicado. La cadena de conexión es la misma: IP+:+Disco+:+\Directorio\BaseDatos. La parte complicada está en que debes realizar NAT en tu modem para redigir la comunicación del puerto 3050 hacia tu máquina.
Si haces uso de una conexión de banda ancha mediante IP dinámica, deberás emplear algo conocido como no-ip para que te sea sumnistrada una ip fija que apunte a las ip dinamica del DNS y mediante ese "puente de ips" puedes realizar la comunicación. Mucho de esto no te sabría decir... no se como explicarlo en forma simple. ¿alguien puede dar una mano ?
Saludos,
#9
Escrito 04 enero 2009 - 11:51
Eso mismo pense, el problema cuando se cambia la ip.
Si cambia no sabras cual es.
Bueno, para eso ya me hice un programita que me envia la nueva ip cuando esta ha cambiado.
Saludos
#10
Escrito 04 enero 2009 - 12:11
Hola
Eso mismo pense, el problema cuando se cambia la ip.
Si cambia no sabras cual es.
Bueno, para eso ya me hice un programita que me envia la nueva ip cuando esta ha cambiado.
Saludos
Pues, precisamente por eso amigo Caral yo uso el nombre del servidor en lugar de la IP, de esa forma no te interesaría ni te preocuparía que se resetee la IP.
Salud OS
PD, Solo requieres de tener DNS en tu red.
#11
Escrito 04 enero 2009 - 01:08
Hola
Eso mismo pense, el problema cuando se cambia la ip.
Si cambia no sabras cual es.
Bueno, para eso ya me hice un programita que me envia la nueva ip cuando esta ha cambiado.
Saludos
pues eso es lo que hace mas o menos el http://www.no_ip.com te actualiza este se actualiza si no estoy mal cada 5min.