Hipervinculo Access 2007

Me puede colaborar con esta duda que me esta matando. Hace unos dias me diste una respuesta excelente de como hacer para guardar la ruta de unas imagenes en pdf pero el problema que tengo ahora es que la aplicacion se instalo en un disco duro externo y los archivos en una carpeta del mismo disco. Al momento de cargar los datos funciona correctamente por que me toma la ruta del disco "F:\Digitalizados\"nombre del archivo". Pero al momento de conectar el disco en otro equipo el pc me cambia de letra la unidad del disco externo.
Necesito que la ruta que me guarde sea solo el nombre de la carpeta y el nombre del archivo "Digitalizados\"nombre del archivo"" para evitarme inconvenientes de estar cambiando manualmente la letra de la unidad cada vez que cambian de pc
El codigo que me dio es el siguiente
Public Function CarpetaArchivo() As String
Dim fDialog As Office.FileDialog
'Set up the File Dialog.
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Seleccionar"
.Title = "Seleccione el documento a vincular"
.InitialFileName = "C:\documentos\"
.InitialView = msoFileDialogViewDetails
.Filters.Clear
.Filters.Add "Ficheros Pdf", "*.pdf;*.jpg"
.Filters.Add "All Files", "*.*"
If .Show = True Then
CarpetaArchivo = .SelectedItems(1)
Else
MsgBox "No se ha vinculado ningun Archivo.", vbInformation, "Inventario Digitalizacion"
End If
End With
End Function
El Selecteditems(1) me toma es la ruta completa...

1 Respuesta

Respuesta
1
Puedo explicarte cómo hacerlo, pero para que se puedan abrir los archivos es necesario informar de la ruta completa (letra de unidad incluida). Sin esa ruta completa la aplicación no sabrá dónde buscar y no te servirá para nada tener la ruta informada "a medias".
Me dices que la aplicación está instalada en un disco duro externo, al igual que los archivos. Si quieres que te proponga una solución alternativa me deberías proporcionar la siguiente información:
- Nombre de la tabla donde guardas las imágenes
- Nombre del campo que guarda la ruta
Espero tus comentarios... y ¡Feliz Año Nuevo! ;)
buen dia...
las imagenes yo las tengo en una carpeta llamada "Digitalizados" en el disco duro externo. y solo guardo es la ruta para que me las muestre. para evitar que quede muy pesada la aplicacion.
el nombre del campo donde capturo la ruta se llama "txthipervinculo" y el nombre de la tabla se llama " Registros".. la funcion "carpetaArchivo" la llamo atravez de un boton de comando.
te agradezco si me puedes ayudar. la aplicacion funciona a la perfeccion con la ayuda que me proporcionaste hace unos meses pero el inconveniente se me presento fue al tenerla portable en el disco duro externo. al trabajarlo en un mismo equipo no hay problema porque le asigno la letra de unidad al disco, el problema se me vienen es cuando lo conectan en otro pc me varia la letra de la unidad y se rompen los enlaces a las imagenes.
gracias
Te explico lo que debes hacer:
1.- Abre tu BD. Una vez abierta pulsas la combinación de teclas ALT+F11. Se te abrirá el editor de VBA.
2.- Te vas a menú Insertar -> Módulo. Guardas ese módulo como mdlActualizaLetraUnidad
3.- Escribes el siguiente código en él:
...
Public Sub cambioLetra(ByVal lUnidad As String)
Dim rst As DAO.Recordset
Dim vRutaAnt As String
Dim vRutaNew As String
Dim longRuta As Integer
Set rst = CurrentDb.OpenRecordset("Registros")
rst.MoveFirst
Do Until rst.EOF
vRutaAnt = Nz(rst.Fields("txtHipervinculo").Value, "")
If vRutaAnt <> "" Then
longRuta = Len(vRutaAnt)
vRutaAnt = Right(vRutaAnt, longRuta - 1)
vRutaNew = lUnidad & vRutaAnt
With rst
.Edit
.Fields("txtHipervinculo").Value = vRutaNew
.Update
End With
End If
rst.MoveNext
Loop
MsgBox "Actualización realizada correctamente"
End Sub
...
4.- Ahora en un formulario (el que quieras, o si no creas uno en blanco) creas un botón de comando, y al evento "Al hacer click" le generas el siguiente código:
...
Private Sub...
Dim vUnidad As Variant
vUnidad = InputBox("Introduzca la ruta de la unidad", "UNIDAD")
If StrPtr(vUnidad) = 0 Then Exit Sub
If Len(vUnidad) = 0 Then Exit Sub
Call cambioLetra(vUnidad)
End Sub
...
Lo que te hacen estos códigos es:
1.- Te pide la letra de la unidad de la unidad externa. Tu le escribes simplemente la letra, sin nada más (por ejemplo, H)
2.- Te actualiza todos los registros, cambiando la letra de unidad que tenías por la nueva. Por ejemplo, si tenías F:\Digitalizados\Informe.pdf ahora tendrás H:\Digitalizados\Informe.pdf.
Si tienes algún problema me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas