Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener ruta real (https://www.clubdelphi.com/foros/showthread.php?t=88102)

doctorhd 13-04-2015 00:47:55

Obtener ruta real
 
Hola a todos, tengo la siguiente duda, es posible obtener la ruta física o real de un archivo a partir de la ruta relativa o mapeada, por ejemplo:

\\SERVIDOR\Base Datos\base.fbd ----> c:\MisBases\Base Datos\base.fbd

Saludos....

Ñuño Martínez 13-04-2015 13:26:20

La función ExpandFileName, de la unidad sysutils, sirve precisamente para lo que pides, al menos en la parte de rutas relativas.

ecfisa 14-04-2015 06:29:34

Hola doctorhd.


Recién me doy cuenta del detalle...: ...\base.fbd :rolleyes:

Si el tema hubiera estado publicado en el foro Firebird, y estas usando la versión 2.0 o posterior, mi primer sugerencia habría sido que obtengas la información del servidor:
Código SQL [-]
SELECT RDB$GET_CONTEXT('SYSTEM', 'DB_NAME') FROM RDB$DATABASE

Saludos :)

doctorhd 16-04-2015 03:47:04

Gracias Ñuño Martínez, pero la función ExpandFileName, me devuelve la misma ruta relativa, cuando se aplica a un recurso en red.

ecfisa

Código SQL [-]
SELECT RDB$GET_CONTEXT('SYSTEM', 'DB_NAME') FROM RDB$DATABASE

esto es aplicable cuando ya tienes acceso a la base de datos.

Mi problema radica en que necesito una forma de que un usuario cliente pueda indicar la ruta de acceso a la base de datos cuando esta se encuentra almacenada en un host distinto al propio en una red local. Todas las opciones de controles que permiten visualizar los recursos de una Lan, devuelven la ruta relativa de las carpetas disponibles para el recurso (host). Y ya que firebird necesita de la ruta física de la base dentro del host para acceder a ella, necesito convertir la ruta relativa a la física dentro de dicho host para poder hacer la conexión.

Saludos.

ecfisa 16-04-2015 04:18:23

Hola doctorhd.

La verdad es que no alcanzo a entender bién la situacion.

Si dispones de la cadena "\\SERVIDOR\Base Datos\base.fbd" hay dos situaciones: La ruta es correcta y se tiene acceso a la base de datos, o no por que la ruta es erronea y en este caso no tendría sentido la conversión.

En el caso que ruta sea correcta y hay conexión, realizando la consulta anterior desde cualquier equipo cliente se obtiene la dirección efectiva a la base de datos en el equipo servidor.

Mis dudas son estas:
Cita:

Mi problema radica en que necesito una forma de que un usuario cliente pueda indicar la ruta de acceso a la base de datos
¿ El usuario debe localizar e indicar la situación física de la base de datos ?
Cita:

...la base de datos cuando esta se encuentra almacenada en un host distinto al propio en una red local
¿ El servidor es remoto y está conectado vía internet ?

Saludos :)

doctorhd 16-04-2015 05:16:15

Hola ecfisa

Cita:

Si dispones de la cadena "\\SERVIDOR\Base Datos\base.fbd" hay dos situaciones: La ruta es correcta y se tiene acceso a la base de datos, o no por que la ruta es errónea y en este caso no tendría sentido la conversión.
Es una ruta valida, pero Firebird no permite para windows rutas del tipo:
Cita:

"\\SERVIDOR\Base Datos\base.fbd",
si permite rutas del tipo:
Cita:

servidor:letra_de_disco:\ruta\archivo_de_base_de_datos
es decir, para mi caso
Cita:

"SERVIDOR:c:\UnaCarpeta\Base Datos\base.fbd"
Entonces necesito saber si es posible transformar la ruta relativa a la ruta fisica:
Cita:

"\\SERVIDOR\Base Datos\base.fbd" -----> "SERVIDOR:c:\UnaCarpeta\Base Datos\base.fbd"
Cita:

¿ El usuario debe localizar e indicar la situación física de la base de datos ?
Si, de otra forma no es posible realizar la conexión.
Cita:

¿ El servidor es remoto y está conectado vía internet ?
No, "SERVIDOR", es un host dentro de una Lan, pero distinto al host desde donde el cliente esta.

Espero haberme hecho entender, Saludos...

ecfisa 16-04-2015 20:46:47

Hola doctorhd.

Ahora te entendí perfectamente, pero ignoro como obtener la ruta local a partir de la UNC.

Saludos :)

ecfisa 16-04-2015 21:27:07

Hola de nuevo.

Pegale una ojeada a este enlace, a ver si se aproxima a lo que estas buscando: Get local name of network share in Delphi

Saludos :)


La franja horaria es GMT +2. Ahora son las 16:36:04.

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