sql >> Database teknologi >  >> RDS >> Access

Forhåndsvisning af dokumenter i Microsoft Access-formular

Vis dokumenter i Microsoft Access-formular

Projektomfang

Vi har for nylig tilføjet et dokumentcenter til et projekt, som giver brugerne mulighed for at vedhæfte dokumenter som pdf, word, txt og billeder til et projekt. Derudover vil de have en automatisk proces sat op til at læse indgående e-mails og gemme de vedhæftede e-mails på et netværksdrev. Målet er at give brugeren mulighed for at se nye dokumenter, der er modtaget, og gemme dem på det rigtige sted. Selvfølgelig vil vi styre processen med at udtrække information såsom emne og hvem dokumentet kom fra for at give brugeren mulighed for at forstå den generelle information om dokumentet, og dette vil blive gemt i en tabel. Derudover skal brugeren være i stand til at se dokumentet for at læse dets indhold.

Løsning

Vi kan selvfølgelig starte andre applikationer fra adgang til at se word-dokumenter i Word og pdf i Adobe Acrobat osv.  Men når en bruger kun har én skærm at arbejde med, betyder det at skifte fra en applikation til en anden, og hvis der er flere dokumenttyper Dette betyder selvfølgelig at åbne flere applikationer. Vi leverede derfor en simpel løsning, der ville lancere dokumentet i en ny adgangsform med fanelayout, så brugeren nemt kan administrere systemet. I eksemplet nedenfor bruger jeg kode, der læser filen fra en given sti, som brugeren skal have adgang til på deres computer. Alternativt, hvis dokumentet er gemt i en SQL-tabel, kan vi ændre koden for midlertidigt at gemme dokumentet på et lokalt drev og starte filen fra den midlertidige placering. Hvis du bruger denne metode, vil du også gerne inkludere yderligere kode for at slette den midlertidige fil efter at have set/lukket formularen.

Eksempelformular

Eksempelformularen skal startes ved at passere dokumentstien i OpenArgs

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

Indlæsningskoden bekræfter, at stien blev bestået, og også om filen eksisterer. Hvis alt er godt, fortsætter processen.

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

Til sidst indlæser koden dokumentet. Showdocument sub tager sig af de forskellige dokumenttyper. De fleste dokumenttyper bruger sagen else. Selve formularen har et skjult tekstfelt kaldet txtPath som gemmer værdien af ​​OpenArgs (filnavn og sti), dette kan enten være et kortlagt drev eller UNC. Webbrowserobjektet gemmer =[txtPath] som kontrolkilde. Word-dokumenter fungerer dog ikke på samme måde, og du skal først gemme dokumentet som html. Jeg brugte en metode oprindeligt skrevet af Crystal Long og lavede nogle mindre ændringer.

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


  1. Hvordan vælger man data mellem to datoer fra sqlite db i formatet dd-mm-åååå?

  2. Håndtering af endnu en PostgreSQL Commitfest

  3. Et par hurtige ting om PASS-feedback

  4. DATEFROMPARTS() Eksempler i SQL Server (T-SQL)