FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
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;
__________________
IncestoCanibal.com |
#4
|
|||
|
|||
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)?
|
#5
|
||||
|
||||
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 |
#6
|
|||
|
|||
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 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. |
|
|
|