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 06-03-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Conectar con Firebird indicando la ruta relativa al fichero, no absoluta

Hola.
Tengo una duda, aunque lo mismo es una tontería, y no me doy cuenta que hago mal. Intento conectar con Delphi/FIBPlus a una base de datos de Firebird, pero me gustaría hacerlo indicando una ruta relativa, no absoluta. Esta apliación que estoy haciendo debe correr en cualquier máquina, y durante la instalación, cada usuario usará una carpeta de instalación distinta. Me gustaría saber si es posible indicar en el DataBase la ruta de manera relativa.

Muchas gracias anticipadas.
__________________
IncestoCanibal.com
Responder Con Cita
  #2  
Antiguo 07-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Si es posible, pero tiene que ser una ruta relativa a la carpeta "actual" del servidor de intarbase.

Creo que será mas fácil, en tiempo de ejecución, averiguar la carpeta en la que está corriendo tu aplicación, y luego construir la ruta de la base de datos, no te parece?

Algo como:

Código:
  RutaBD := ExtractFilePath(ExpandFileName(ParamStr(0))) + 'datos\basededatos.fdb';
  // te devolverá 'c:\archivos de programa\tuprograma\datos\basededatos.fdb'
  // por ejemplo.
Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 07-03-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Buenas de nuevo.

Muchas gracias por solucionarme el problema . El fallo que yo tenía es que pensaba que la de la ruta base de datos la tenía que especificar obligatoriamente en tiempo de diseño, y no es asi. En mi componente DataBase he eliminado todo lo referente al user/pass y la ruta, y en el FormShow de la ventana principal de mi aplicación he añadido esto:


Código:
//Compruebo que existe la BD
if vModuloDatos.BaseDatos.Connected then
vModuloDatos.BaseDatos.Connected:=False;
if fileexists(ExtractFilePath(ExpandFileName(ParamStr(0)))+'bdatos\bdatos.gdb') then
begin
vModuloDatos.BaseDatos.DBName:=ExtractFilePath(ExpandFileName(ParamStr(0)))+'bdatos\bdatos.gdb';
vModuloDatos.BaseDatos.ConnectParams.UserName:='xxx';
vModuloDatos.BaseDatos.ConnectParams.Password:='xxx';
vModuloDatos.BaseDatos.Connected:=True;
end;
Así que ahora funciona perfectamente, justo lo que necesitaba. Un millón de gracias jachguate
__________________
IncestoCanibal.com
Responder Con Cita
  #4  
Antiguo 08-03-2004
orodriguezc orodriguezc is offline
Miembro
 
Registrado: nov 2003
Ubicación: Cartagena - Colombia
Posts: 33
Poder: 0
orodriguezc Va por buen camino
No entiendo... Y si el PC Cliente no tiene acceso físico al fichero de la base de datos (se supone que no es necesario)?
Responder Con Cita
  #5  
Antiguo 08-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
claro que no es necesario. Creo que no has entendido bien la propuesta del hilo, que nada tiene que ver con esto. Te recomiendo su re-lectura. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 08-03-2004
orodriguezc orodriguezc is offline
Miembro
 
Registrado: nov 2003
Ubicación: Cartagena - Colombia
Posts: 33
Poder: 0
orodriguezc Va por buen camino
Jachguate, seguí tu consejo y releí el hilo varias veces, pero sigo confundido. Veamos si logro plantear mi duda:

verm83 escribió la siguiente línea de código:

Código:
if fileexists(ExtractFilePath(ExpandFileName(ParamStr(0)))+'bdatos\bdatos.gdb') then
Supongo que este código lo está ejecutando la aplicación que se ejecuta en el PC Cliente, por tanto solo devolverá True si el usuario logueado en el PC cliente tiene acceso a 'RUTA\bdatos\bdatos.gdb'. Es así o estoy errado?. Si estoy en lo correcto creo que esta configuración compromete la seguridad del Sistema.

El código tambien asume que tanto el servidor de base de datos FireBird como el aplicativo se encuentran en la misma máquina. De llegar a estar en máquinas diferente el código no funcionaría. Es Así o estoy errado?


Si en ambos casos me equivoco por favor corregidme y asi aprendemos todos . Muchas gracias.
Responder Con Cita
  #7  
Antiguo 08-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por orodriguezc
Supongo que este código lo está ejecutando la aplicación que se ejecuta en el PC Cliente, por tanto solo devolverá True si el usuario logueado en el PC cliente tiene acceso a 'RUTA\bdatos\bdatos.gdb'. Es así o estoy errado?. Si estoy en lo correcto creo que esta configuración compromete la seguridad del Sistema.
Hola orodriguez.

Todas tus suposiciones son ciertas. Lo dicho sobre la seguridad del sistema seria muy cierto en el caso de un sistema que requiera de un entorno seguro... pero hay muchos desarrollos orientados al escritorio. Date cuenta que muchos desarrollos se hacen para aplicaciones monousuario, y dado que la pregunta no indica que sea un caso diferente, simplemente lo he asumido asi. De hecho, para una aplicación cliente, donde la base de datos está corriendo en otro servidor, la formula proporcionada no serviria de nada, pues el cliente de interbase no puede acceder a la base de datos con la dirección unc del archivo que la contiene. La cadena de conexión, en estos casos, depende del protocolo usado. En tcp-ip, sería algo como:

En el caso de windows, usando el nombre del servidor:
servidor:c:\ruta\base.fdb
usando ip:
192.168.0.42:c:\ruta\base.fdb

En el caso de linux...

servidor:/usr/firebird/bases/base.gdb
o bien
192.168.0.42:/usr/firebird/bases/base.gdb

Cita:
Empezado por orodriguezc
El código tambien asume que tanto el servidor de base de datos FireBird como el aplicativo se encuentran en la misma máquina. De llegar a estar en máquinas diferente el código no funcionaría. Es Así o estoy errado?
Totalmente correcto.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 08-03-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Buenas, que respondo.
Todo correcto lo que comentáis. La aplicación que estoy programando es mi proyecto de fin de estudios, la cual acompañaré con un instalador de Firebird, y todo detallado, con lo que, en caso de no existir éste en el pc cliente, se instalaría junto con la aplicación. Igualmente, la base de datos estará en la carpeta de instalación, por lo que he obviado la ip / puerto.
He de decir que llevo programando en Delphi apenas un par de meses, y hay muchas cosas que las tengo en desconocimiento, poco a poco cogeré práctica.

Saludos y gracias por los consejos.
__________________
IncestoCanibal.com
Responder Con Cita
  #9  
Antiguo 09-03-2004
orodriguezc orodriguezc is offline
Miembro
 
Registrado: nov 2003
Ubicación: Cartagena - Colombia
Posts: 33
Poder: 0
orodriguezc Va por buen camino
Gracias Jachguate y verm83. Muy claras y logicas sus explicaciones. Ahora si entendi. Hasta luego.
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


La franja horaria es GMT +2. Ahora son las 10:44:41.


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