sql >> Base de Datos >  >> RDS >> Access

Vista previa de documentos en formulario de Microsoft Access

Vista previa de documentos en formulario de Microsoft Access

Alcance del proyecto

Recientemente agregamos un centro de documentos a un proyecto que permite a los usuarios adjuntar documentos como pdf, word, txt e imágenes a un proyecto. Además, tendrán un proceso automático configurado para leer los correos electrónicos entrantes y guardar los archivos adjuntos de correo electrónico en una unidad de red. El objetivo es permitir al usuario ver los nuevos documentos que se han recibido y guardarlos en la ubicación correcta. Por supuesto, administraremos el proceso para extraer información como el tema y de quién proviene el documento para permitir que el usuario comprenda la información general del documento y esto se guardará en una tabla. Además, el usuario debe poder ver el documento para leer su contenido.

Solución

Por supuesto, podemos iniciar otras aplicaciones desde el acceso para ver documentos de Word en Word y PDF en Adobe Acrobat, etc. Sin embargo, cuando un usuario solo tiene una pantalla para trabajar, esto significa cambiar de una aplicación a otra y si hay varios tipos de documentos, entonces de Por supuesto, esto significa abrir varias aplicaciones. Por lo tanto, brindamos una solución simple que lanzaría el documento en un nuevo formulario de acceso con diseño de pestañas que le permite al usuario administrar fácilmente el sistema. En el siguiente ejemplo, estoy usando un código que leerá el archivo desde una ruta determinada, a la que el usuario necesitará acceder en su computadora. Alternativamente, si el documento se guarda en una tabla SQL, podemos modificar el código para guardar temporalmente el documento en una unidad local y ejecutar el archivo desde la ubicación temporal. Si usa este método, también querrá incluir un código adicional para eliminar el archivo temporal después de ver/cerrar el formulario.

Formulario de muestra

El formulario de muestra proporcionado debe iniciarse pasando la ruta del documento en OpenArgs

DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath

El código de carga verifica que se pasó la ruta y también si el archivo existe. Si todo está bien, el proceso continúa.

Private Sub Form_Load()

    If IsNull(Me.OpenArgs) Then
        MsgBox "No document to show", , "Path not specified"
        Exit Sub
    Else
        If Not FSO.FileExists(Me.OpenArgs) Then
            MsgBox "Your computer does not have access to the named file. You need to download the file to view it."
            Exit Sub
        Else
            Showdocument OpenArgs
        End If
    End If
    
End Sub

Finalmente el código carga el documento. El sub Showdocument se encarga de los diferentes tipos de documentos. La mayoría de los tipos de documentos utilizan el caso else. El formulario en sí tiene un cuadro de texto oculto llamado txtPath que almacena el valor de OpenArgs (nombre de archivo y ruta), puede ser una unidad asignada o UNC. El objeto del navegador web almacena =[txtPath] como fuente de control. Sin embargo, los documentos de Word no funcionan de la misma manera y primero debe guardar el documento como html. Usé un método escrito originalmente por Crystal Long e hice algunos cambios menores.

Private Sub Showdocument(strPath As String)
    Dim strExt As String
    Dim sPathFileHTML As String
    Dim oWordApp As Object
    Dim oDoc As Object
    
    strExt = GetFileExt(strPath)
    Select Case strExt
        Case "docx"
            'save word doc as HTML
            sPathFileHTML = CurrentProject.Path & "\temp.html"
            Set oWordApp = CreateObject("Word.Application")
            Set oDoc = oWordApp.Documents.Open(strPath)
            oDoc.SaveAs2 FileName:=sPathFileHTML, FileFormat:=8 'wdFormatHTML
            oDoc.Close False
            oWordApp.Quit
            Set oDoc = Nothing
            Set oWordApp = Nothing
        Case Else
            sPathFileHTML = strPath
    End Select
    
    'open in browser control
    Me.txtPath.Value = sPathFileHTML

End Sub