Automatizar creación de hipervínculos en Access

Estoy migrando una base de datos de RRHH desde Excel a Access y he intentado automatizar la creación de un hipervínculo al currículo de cada nueva persona que ingreso a la DB utilizando ciertas reglas. Los hipervínculos que he hecho a mano se almacenan según el siguiente criterio:
\\CV\(primera letra del apellido)\Nombres, Apellidos.pdf 
Tengo creada una consulta que genera el formato a partir de la expresión siguiente: 
"CV\" & Izq(Reclutamiento!apellidos,1) & "\" & Reclutamiento!apellidos & ", " & Reclutamiento!names & ".pdf"
Pero estoy estancado en la creación del hipervínculo a partir de la columna resultante. Por lo que he descubierto debería introducir los datos a través de un formulario para poder usar estos datos en la forma que quiero, pero no logro hacerlo. Sólo conseguí que al crear un nuevo registro aparezca automáticamente #¿Nombre? Y cuando ingreso cualquier dato al formulario esto desaparece y queda en blanco.
Además, ¿cómo puedo definir el texto que va a mostrar en la celda para que no me muestre directamente la ruta de acceso? A los que he introducido manualmente les he puesto como texto "Ver CV" pero hacerlo a mano es un proceso muy lento.

1 Respuesta

Respuesta
1
En el formulario, en que campo que desees, pincha en Propiedades, y en la pestaña de formato, la última opción es "Es Hipervínculo" (Si/No)
Si marcas sí, cuando pinches en ese campo, si tienes la ruta introducida correctamente según el formato de Windows, abrirá el fichero.
Otro tema distinto es el caso en que no quieres que se muestre la ruta.
En ese caso tendrás que tener el valor del registro (la ruta) en algún campo, aunque sea oculto. Podrás entonces crear un botón, o un campo de texto con evento, desde el que llamarás a una ejecución de aplicación desde el Shell de Windows:
En código:
Call Shell ("explorer.exe " &  Fichero, vbNormalFocus)
En este caso:
+ Fichero es la ruta completa hasta el fichero PDF, que lo podrás obtener del campo del formulario o de la tabla
Gracias por la ayuda, pero sigo teniendo un problema. Cuando ingreso datos en el formulario sigue sin rellenar automáticamente los campos de hipervínculo. Traté de usar la opción de Eventos pero no hay caso.
Ahora el problema es entonces que quieres que se rellene el campo automáticamente con los datos de la tabla. Prueba a refrescar el valor del campo.
Si no te funciona, puedes hacer pruebas para ver si estás obteniendo bien los campos. Crea un campo que sólo rellene Izq(Reclutamiento! Apellidos, 1), otro que rellene Reclutamiento! Apellido y otro Reclutamiento! Names, que entiendo son los tres campos dinámicos, para ver cuál no se calcula bien.
Si uno de ellos no es correcto no podrás formar bien la cadena con la ruta y nombre del fichero.
¿Cómo hago eso de refrescar el valor del campo?
Los campos los estoy obteniendo bien. Creé una consulta para hacer la prueba y me genera el texto tal como lo busco, sin embargo he intentado de todo y no logro el siguiente paso. Con este serán 3 días pegado en lo mismo :(
Lo más simple es crear un evento que se ejecute al actualizar alguno de los campos o después de cargar el formulario, y que actualice ese campo con la suma de los otros.
Otras opciones de referesco...
Sobre el formulario:
Me. Recalc ó
DoCmd. DoMenuItem acFormBar, acRecordsMenu, 5,, acMenuVer70
Sobre el campo puedes probar también DoCmd. Requery o DoCmd. RepaintObject
Unos minutos antes que me contestaras conseguí que me rellene el campo al hacer click usando el siguiente código:
Me.CV = "CV\" & Left(apellidos, 1) & "\" & Me.apellidos & Me.names & ".pdf"
De ese modo todavía no me creaba el link correctamente, ya que quedaba como etiqueta de texto del hipervínculo, pero finalmente conseguí que funcionara como quería! Usé lo siguiente como código:
Me.CV = "Ver CV" & "#" & "CV\" & Left(apellidos, 1) & "\" & Me.apellidos & ", " & Me.names & ".pdf" & "#"
Me imagino que probablemente será un poco lenta la ejecución pero no necesito optimización extrema, al menos por el momento.
Muchísimas gracias por toda tu ayuda :)
Perfecto.
Te ruego cierres pues la cuestión.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas