Sobre el parth relativo

Hola de nuevo
Parece que solucionado el tema de mostrar imágenes en un formulario me gustaría depurar el tema haciendo que access tome la ruta de cada foto partiendo de un directorio relativo.
Para hacer las pruebas he creado una tabla con un campo clave autonumérico y un campo de texto (que llamo "nombre") donde almaceno el nombre del fichero de la foto, sin la extensión. La base de datos está almacenada en c:\d y las fotos en c:\d\p luego tu código me queda tal que así:
If Len(Dir("c:\d\p\" & Me![nombre] & ".jpg")) <> 0 Then
Me!FOTO.Picture = "c:\d\p\" & Me![nombre] & ".jpg"
Else
Me!FOTO.Picture = ""
End If
Si muevo la carpeta de a otra unidad, a d: por ejemplo, o renombro la carpeta o algo así el formulario deja de mostrar las fotos ya que en c:\d\p no encuentra nada. Mi primer intento fue esto:
If Len(Dir(".\p\" & Me![nombre] & ".jpg")) <> 0 Then
Me!FOTO.Picture = ".\p\" & Me![nombre] & ".jpg"
Else
Me!FOTO.Picture = ""
End If
Y luego:
If Len(Dir("\p\" & Me![nombre] & ".jpg")) <> 0 Then
Me!FOTO.Picture = "\p\" & Me![nombre] & ".jpg"
Else
Me!FOTO.Picture = ""
End If
Que seria la forma de hacerlo en html por ejemplo. Pero no hubo suerte.
Se me ocurrió que podría crear una "super variable", un campo en una tabla donde almacenar la ruta a la fotos y si moviera el directorio sólo tendría que actualizar un registro. Pero no se muy bien si es posible y en tal caso cómo hacerlo.
También me huelo que se podría hacer algo con la función currentDir(), CurrentDB o CurrentProyect. Pero aquí si que ya me pierdo, no se ni cómo aplicarlas ni donde ni nada :D

1 Respuesta

Respuesta
1
Veo que ya te van saliendo las cosas, ya ves que no es tan difícil.
Bueno, también veo que vas bastante encaminado sobre todo al final de tu pregunta.
En este caso también te doy dos opciones, aunque supongo que existen muchas más.
La primera es la de que te crees una tabla donde almacenes el directorio donde tienes las fotos. Esta opción esta muy bien, aunque considero que si solo tienes un directorio pues no merece demasiado la pena. Ya que luego deberías abrir la tabla de forma no visual es decir mediante código y tener todo el rato una variable cargada en memoria guardando este dato.
La segunda opción también la apuntas en parte tu. Y es la de que la carpeta de fotos la introduzcas en el directorio donde tienes la base de datos.
Con esto lo que puedes hacer es con el comando CurrentProject. Path recuperar la ruta donde tienes guardada la db, por tanto solo deberías añadirle el nombre del directorio de fotos:
ruta=CurrentProject.Path & "\p\" & Me![nombre] & ".jpg"
De esta manera si cambias tu db de directorio no importara y no dará error.
Solo dará error si cambiases de nombre el directorio de las fotos, o no estuviera este directorio al lado de la db.
Espero que te sirva.
Si quieres utilizar la primera opción me lo dices y te lo explicaría. Aunque para tu caso considero mejor la segunda opción.
Bueno, pues impresinante otra vez. Rápido y certero ;)
La segunda opción cubre todas mis necesidades, ya que el directorio con las fotos siempre va a acompañar a la base de datos donde quiera que esta valla.
Funciona pues a las mill maravillas. Muchas gracias de nuevo, está claro que eres un fiera en esto de access.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas