Access
 sql >> Base de données >  >> RDS >> Access

Aperçu des documents dans le formulaire Microsoft Access

Aperçu des documents dans le formulaire Microsoft Access

Portée du projet

Nous avons récemment ajouté un centre de documentation à un projet qui permet aux utilisateurs de joindre des documents tels que pdf, word, txt et images à un projet. De plus, ils disposeront d'un processus automatique configuré pour lire les e-mails entrants et enregistrer les pièces jointes des e-mails sur un lecteur réseau. L'objectif est de permettre à l'utilisateur de visualiser les nouveaux documents qui ont été reçus et de les enregistrer au bon endroit. Bien sûr, nous gérerons le processus d'extraction d'informations telles que le sujet et l'origine du document pour permettre à l'utilisateur de comprendre les informations générales du document et cela sera enregistré dans un tableau. De plus, l'utilisateur doit pouvoir visualiser le document pour lire son contenu.

Solution

Nous pouvons bien sûr lancer d'autres applications depuis l'accès pour afficher des documents Word dans Word et pdf dans Adobe Acrobat, etc. Cependant, lorsqu'un utilisateur n'a qu'un seul écran pour travailler, cela signifie passer d'une application à une autre et s'il existe plusieurs types de documents, alors de bien sûr, cela signifie ouvrir plusieurs applications. Nous avons donc fourni une solution simple qui lancerait le document dans un nouveau formulaire d'accès avec une disposition en onglets permettant à l'utilisateur de gérer facilement le système. Dans l'exemple ci-dessous, j'utilise un code qui lira le fichier à partir d'un chemin donné, auquel l'utilisateur aura besoin d'accéder sur son ordinateur. Alternativement, si le document est enregistré dans une table SQL, nous pouvons modifier le code pour enregistrer temporairement le document sur un lecteur local et lancer le fichier à partir de l'emplacement temporaire. Si vous utilisez cette méthode, vous souhaiterez également inclure un code supplémentaire pour supprimer le fichier temporaire après avoir affiché/fermé le formulaire.

Exemple de formulaire

L'exemple de formulaire fourni doit être lancé en passant le chemin du document dans OpenArgs

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

Le code de chargement vérifie que le chemin a été transmis et également si le fichier existe. Si tout va bien, le processus se poursuit.

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

Enfin, le code charge le document. Le sous Showdocument prend en charge les différents types de documents. La plupart des types de documents utilisent la casse else. Le formulaire lui-même a une zone de texte masquée appelée txtPath qui stocke la valeur de OpenArgs (nom de fichier et chemin), il peut s'agir d'un lecteur mappé ou d'un UNC. L'objet du navigateur Web stocke =[txtPath] comme source de contrôle. Cependant, les documents Word ne fonctionnent pas de la même manière et vous devez d'abord enregistrer le document au format HTML. J'ai utilisé une méthode écrite à l'origine par Crystal Long et j'ai apporté quelques modifications mineures.

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