Grabar vinculo a través de explorador de carpetas

Me gustaría saber como se puede hacer esto:

Tengo un formulario de clientes al que quiero vincularle una serie de documentos, con el fin de no engordar la base de datos, he pensado en crear un subformulario con campo hipervínculo en el que ir poniendo los documentos que quiero asociar a cada cliente (varios documentos en cada cliente).

La idea es hacer doble click en el campo vacío, me abra un explorador de carpetas, elegir el documento que deseo y que me escriba en el campo la ruta y nombre de este documento. Así podré clicar en la ruta y acceder al documento.

Y para rizar el rizo seria genial que solo mostrase el nombre del archivo ya que pretendo que todos los archivos estén en la misma carpeta.

1 respuesta

Respuesta
1

Para crear un cuadro de dialogo para abrir archivos has de utilizar el Objeto FileDialog que viene incluido en Access.

El FileDialog te devuelve la ruta completa del fichero seleccionado, que es lo que debes almacenar en el campo de la base de datos.

Si en el formulario quieres mostrar sólo el nombre, puedes hacer 2 cosas:

- Utilizar el Objeto FileSystemObject, que puede llegar a ser complicado aunque por otro lado es muy efectivo.

- Utilizar rutinas de tratamiento de texto, más sencillas de uso. Un ejemplo podría ser el siguiente:

NombreArchivo = mid(RutaCompleta, InstrRev(RutaCompleta, "\")+1)

Con esto sólo muestras el nombre y extensión del archivo.

Gracias por tu respuesta, no tengo demasiado conocimiento en vba. He intentado con lo que me dices a través de la ayuda de access montar el código pero no soy capaz.

Tengo access 2010.

Por si me quieres echar una mano te diré que tengo un subformulario con un campo que se llama "Ruta" con tipo de datos Hipervínculo y en vista Hoja de datos, en el que quiero que al hacer dobleclic en el registro vacío me abra un cuadro de dialogo para elegir un archivo en "C:\Almacen\Documentos\" que es donde almacenaré todos los documentos. Una vez elegido que me muestre en este campo el nombre del archivo elegido, para cuando lo necesite clicar en él y que se abra el documento en cuestión.

Gracias por tu tiempo y paciencia.

Un saludo.

Perdona que tarde en responderte.

Con "registro" normalmente nos referimos a todo el conjunto de campos que conforman una fila de datos en una tabla, los formularios no tienen "registros" ni "campos", ya que sólo son objetos para visualizar los datos.

En un formulario tienes controles, que pueden ser de muchos tipos dependiendo de lo que quieras hacer, estos controles pueden estar enlazados a datos, es decir, un control puede presentar la información existente en un campo; y el formulario puede recorrer un conjunto de registros, y dependiendo de cómo esté configurado, presentarlos uno a uno (formulario simple) o todos (formulario continuo).
Luego tienes otros controles, como botones, que se pueden utilizar para lanzar procesos.

Para hacer "DobleClick" en un registro tendrías que programar cada evento "DobleClick" de todos los controles vinculados a datos en ese formulario. Es mucho más sencillo poner un botón para realizar la acción. Este botón lo puedes poner a la derecha del TextBox "Ruta", o si prefieres usar el "DobleClick", hacerlo sólo en ese control.

En la ayuda de Access viene un ejemplo de FileDialog, te lo pongo por si no lo encuentras.

Sub Main()
     'Declare a variable as a FileDialog object.
     Dim fd As FileDialog
     'Create a FileDialog object as a File Picker dialog box.
     Set fd = Application.FileDialog(msoFileDialogFilePicker)
     'Declare a variable to contain the path
     'of each selected item. Even though the path is a String,
     'the variable must be a Variant because For Each...Next
     'routines only work with Variants and Objects.
     Dim vrtSelectedItem As Variant
     'Use a With...End With block to reference the FileDialog object.
     With fd
         'Use the Show method to display the File Picker dialog box and return the user's action.
         'The user pressed the action button.
         If .Show = -1 Then
             'Step through each string in the FileDialogSelectedItems collection.
             For Each vrtSelectedItem In .SelectedItems
                 'vrtSelectedItem is a String that contains the path of each selected item.
                 'You can use any file I/O functions that you want to work with this path.
                 'This example simply displays the path in a message box.
                 MsgBox "The path is: " & vrtSelectedItem
             Next vrtSelectedItem
        'The user pressed Cancel.
         Else
         End If
     End With
     'Set the object variable to Nothing.
     Set fd = Nothing
End Sub

A partir de aquí, es fácil modificar este código para adaptarlo, en la ayuda viene todo muy bien explicado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas