Hipervínculo en tabla

Me has ayudado mucho y espero que puedas seguir ayudándome. De todas maneras gracias anticipadas.
Mi duda ahora es la siguiente.
Yo puedo guardar un campo en una tabla y que automáticamente se me guarde con un hipervínculo.
Ejemplo
Campo 1: nº de obra
Campo 2: Código
Hipervínculo que quiero que se cree cuando guarde esos dos campos en la tabla: C:\obras\nº de obra \ código
Es decir el nº de obra es una carpeta dentro del disco duro y el código es el nombre del archivo.
El código será el que tenga el hipervínculo.
¿Es esto posible o se me esta yendo la pelota?
Respuesta
1
Claro que se puede hacer...
Coloca un campo, visible o invisible como quieras que sea el del hipervínculo... debe estar bloqueado... propiedad en ficha datos... para nadie modifique el dato...
Ahora me imagino que guardaras con un botón...
En el botón coloca lo suiguinte...
****************************
TxtHipervinculo = currentproject.Path & "\" & CAMPO1 & "\" & CAMPO2
me.refresh
****************************
OJO:
currentproject.Path & "\"
Es para la ruta donde esta la base de datos, pero coloca la que necesitas...
CAMPO1: Supuestamente este es la caja de texto del Campo 1.
CAMPO2: Supuestamente esta caja es donde se amrra a Campo 2.
Luego coloca el código de guardar...
Me. Refresh : actualiza los datos actuales, me imagino que las cajas de texto, inclusive el del hupervinculo están amarrados a campos de una tabla..
Me avisas si era esto lo que necesitaba... sino te sigo ayudando..
Att:telemaco
Haber como te explico:
Yo tengo un campo que es el número de la obra. Después tengo otro campo que es el código de la obra (alfanumérico).
Lo que quiero es que se me cree en una tabla un registro que sea en una columna el número de la obra y en la otra el código que es lo que quiero que sea el hipervínculo.
Quiero que el hipervínculo busque el enlace en la carpeta del disco duro = número de obra.
Por Ejemplo:
Codigo de obra: jf 483r rijfe
Número de obra: 203
Yo tendré una carpeta en el disco duro que sea 203 y el botón me creará un enlace hacia esa carpeta que me abra el archivo jf 483r rijfe.
Lo que me parece imposible es como le digo el tipo de archivo que es porque puede ser un word, excel, wdg, etc.
Podría seleccionar la extensión del hipervínculo de un campo desplegable...
Jo que rollo me parece espero que me puedas ayudar si es esto posible.
Disculpa que no te había entendido...
Pero hay un problema los hipervínculos que maneja ACCESS (campos) DEBES COLOCARLE TODA LA RUTA... si quieres modificar el titulo, debes luego coger uno a uno y decir modificar el hipervínculo.. que seria un gran problema... ahora seria tratarlo NO COMO UN HIPERVÍNCULO... sino como una caja de texto normal... y crear código que al hacer click, ABRA EL ARCHIVO CON SU RESPECTIVO PROGRAMA... pero loigicamente debes colocarle la extensión...
Ahora para abrir el archivo utiliza esto (código por api)
Ejemplo:
Esta parte la colocas en el evento al hacer click, en la caja de texto:
**********************
Dim Resultado As Variant
' intentamos abrir el archivo
Resultado = OpenFile("C:\MiArchivo.txt")
' si ha habido cualquier problema ...
If Resultado <> True Then
' mostramos el mensaje que nos envía el sistema
MsgBox Resultado
End If
***************************
Pega este código en un módulo estandar:
'---------------------------------------------------------
'
' OpenFile
'
' Código escrito originalmente por Juan M. Afán de Ribera
'
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
' [email protected]
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Private Declare Function FormatMessage Lib "kernel32" _
Alias "FormatMessageA" _
(ByVal dwFlags As Long, _
lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
Arguments As Long) As Long
Private Const SW_NORMAL = 1&
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
' función que abre cualquier archivo ejecutable o documento
' que esté registrado en el sistema con su respectiva aplicación
Public Function OpenFile(FileName As String) As Variant
Dim RetVal As Long
Dim sError As String
Dim LenMsg As Long
' se manda abrir el archivo
RetVal = ShellExecute(0&, "open", FileName, 0&, vbNullString, SW_NORMAL)
' si se ha producido algún error
If RetVal < 33 Then
sError = Space(1024)
' obtenemos el mensaje de error que manda el sistema
LenMsg = FormatMessage( _
FORMAT_MESSAGE_FROM_SYSTEM, _
ByVal 0&, _
RetVal, _
0&, _
sError, _
Len(sError), _
0&)
' devolvemos el mensaje de error
OpenFile = Left(sError, LenMsg - 1)
Else
' la función tuvo éxito
OpenFile = True
End If
End Function
'---------------------------------------------------------
Ojo:donde dice openfile y la ruta puedes concatenar la ruta que necesitas...
Att:telemaco
Gracias por el interés que estas poniendo en ayudarme.
¿Si la ruta no fuese siempre la misma sino que dependiese de lo que pongo en un campo?
Ejemplo
Campo 1: 252
Ruta:C:\252\
Campo 1: 257
Ruta:C:\257
¿Es posible o no?
Con el código anterior solo he conseguido abrir siempre la misma carpeta pero no consigo abrir el archivo.
Gracias
Un saludo
Si claro...
Donde dice
Resultado = OpenFile("C:\MiArchivo.txt")
le pasarias el valor del campo, concatenas y pasas el valor es decir algo asi:
Resultado = OpenFile(Ruta & "miarchivo.txt")
Acá concateno la variable ruta o el campo con el nombre del archivo, que debes tenerlo en otro campo me imagino... o coloca una variable tipo cadena antes de llamar la función, donde concatenes el nombre del archivo y colocarías algo así:
Resultado = OpenFile(Ruta & NomArchivo)
Lógicamente con la extensión del archivo...
Att:telemaco
Algo tengo que estar haciendo mal porque no me sale.
Verás yo tengo como ruta: C:\ y como archivo el valor del campo de texto del formulario. Me queda algo así:
Resultado = OpenFile("c:\" & "union")
Yo no se mucho de programación.
Tengo un archivo de access que igual me soluciona el problema si me das un correo te lo mando y lo comentamos.
No he solucionado el problema pero me has ayudado bastante.
Gracias
Es que tienes que cerciorarte de pasarle la RUTA COMPLETA CON EL ARCHIVO Y SU EXTENSIÓN...
Mi correo es:
[email protected]
Att:telemaco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas