Abrir documento PDF desde un campo de formulario en Access

No quisiera que pensarais que soy un abusón, pero es que ante la gran ayuda que prestáis, uno se va animando a hacer más y más cosas. Ahora se me ha ocurrido abrir un documento PDF, diferente en cada caso y correspondiente a esa fila, desde un campo del subformulario "POLIZAS", insertado en "FICHACLIENTE", que tiene formato de hoja de datos. Digo abrir porque no quiero que forme parte de la BD, para evitar que se haga demasiado grande y por lo tanto, los documentos estarían en una carpeta ajena a dicha BD. Perdón por el abuso y muchísimas gracias por anticipado.

2 respuestas

Respuesta
1

Si en tu campo guardas la ruta completa y nombre y extensión del archivo, o sólo el nombre (y la ruta y extensión la añades por VBA), con el método ApplicationFollowHyperlink puedes abrirlo sin problemas.

Otra forma sería con ShellExecute, como explica Neckkito aquí: http://siliconproject.com.ar/neckkito/index.php/component/content/article/95-ejemplos-explicados/ejemplos-de-codigo/132-shellexecute 

Perdona, amigo Sveinbjorn. Creí que te había contestado antes, pero seguro que se me olvidó darle al botón de enviar. Ya me estoy estudiando tus indicaciones y siguiendo las del compañero Icue, que amablemente, también está ayudándome en este tema. No valoro tu respuesta para no perder el hilo contigo. Mucha gracias. Un abrazo

Ya me funciona todo, hasta la próxima idea que se me ocurra. Muchas gracias.

No hay de qué. Saludos


http://nksvaccessolutions.com/Foro 

Respuesta
1

Como no hay problemas de espacio, voy a darte mi modesta opinión.

Supongamos que el formulario se llama Almacen y el subformulario Productos, con un cuadro de texto(donde vas a guardar la ruta al PDF) llamado TipoProd.

En un botón de comando del Formulario, en sus propiedades-eventos-al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub escribe:

 Dim fd As FileDialog
 Set fd = Application.FileDialog(msoFileDialogFilePicker)
 Dim vrtSelectedItem As Variant
 With fd
 If .Show = -1 Then
 For Each vrtSelectedItem In .SelectedItems
  MsgBox "The path is: " & vrtSelectedItem
 Forms!Almacen!Productos.Form!TipoProd = vrtSelectedItem
 Next vrtSelectedItem
 Else
 End If
 End With
 Set fd = Nothing

Si quieres puedes prescindir del msgbox....

Con lo cual, te abrirá un explorador y ahí eliges el archivo PDF que quieres guardar EN EL REGISTRO ACTIVO DEL SUBFORMULARIO, con lo cual en el cuadro tendrás la ruta y así no ocupara espacio. Y para visualizar el archivo PDF te aconsejaría que también en el formulario crearas otro botón, y en evento al hacer clic, y como bien dice Sveinborj, le pongas

Dim Pepe As String
Pepe = Forms!Almacen!Productos.Form!Glosa
Application. FollowHyperlink joder

Cuando pulses el botón se abrirá el archivo PDF correspondiente AL REGISTRO ACTIVO DEL SUBFORMULARIO.

Perdona, pero cuando escribía estaba a la vez viendo un programa de televisión

Dim Pepe as string

pepe=Forms!almacen!productos.form!tipoprod

Application. Followhyperlink pepe

Lo siento

Hola, Icue. He seguido a al pie de la letra tus instrucciones, cambiando, como es natural, los nombre del formulario, subformulario y texbox independiente que he creado es este. Cuando pulso en el botón del formulario me sale lo que ves en la imagen. ¿Qué hago mal?

Por otro lado en el otro botón en el procedimiento indicado también por Sveinbjorn, en la línea Dim Pepe As String",¿"Pepe" que quiere decir"?

Perdona pero como verás tengo serias carencias en VBA. Un saludo

Perdón, perdón..... Después de enviar la anterior respuesta, leyendo  ejemplo de Nekkito que me envió Sveinbjorn, me dado cuenta que tenia que activar la librería de Microsoft Office. ya lo he hecho y parece que ahora funciona tu cod. Hasta pronto. Gracias

Vamos por partes. En la ventana del código, en Herramientas-Referencias tienes que activar las casillas

Si no las tienes activadas, no te encuentra el objeto Filedialog.

En el caso de Pepe, es que la gente siempre define las variables, con

Dim i as integer

Dim var as variant

...

Y yo como soy así, las llamo Pepe(de José), Julián(de mi nombre), etc.

Las variables las puedes nombrar como quieras

Icue, funciona, pero pone la misma ruta en TODOS los campos "PDFPOL" de todos los subfurmalarios.......y, claro, lo que pretendo es cada una tenga el suyo....Hasta pronto

Además, la ruta no se queda guardada. Cuando cierres el formulario y lo vuelves a abrir el campo "PDFPOL" esta vacío, en todos los subformularios. El Application. Followhyperlink. si funciona, o sea abre perfectamente el pdf. lo que no he podido comprobar es si abre solo el del registro activo en subform o abre siempre el mismo. A la espera de tu respuesta, sigo agradeciendo tu trabajo. Un saludo 

Eso te pasa porque el cuadro de texto donde quieres que aparezca la ruta, no tiene origen de datos. Ponle como origen algún campo tipo texto de la tabla origen del subformulario. Por ejemplo

En el, si pulsas el botón Comando12, y el registro activo en el subformulario es el 3º en el cuadro de texto TipoProducto te aparecerá la ruta, pero para eso ya te he dicho que el cuadro de texto TipoProducto tiene como origen de datos, el campo del mismo nombre de la tabla Productos, origen del subformulario.

Y si señalas un registro en el subformulario y le das al botón, que pone comando sólo te abre el visor de fotos.

De todas formas, si quieres, o bien me dices tu correo, o si no quieres que nadie lo sepa me mandas un mensaje a [email protected]  y te mando un ejemplo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas