sql >> Databasteknik >  >> RDS >> Access

Förhandsgranska dokument i Microsoft Access Form

Förhandsgranska dokument i Microsoft Access-formulär

Projektomfattning

Vi har nyligen lagt till ett dokumentcenter till ett projekt som låter användare bifoga dokument som pdf, word, txt och bilder till ett projekt. Dessutom kommer de att ha en automatisk process inställd för att läsa inkommande e-postmeddelanden och spara e-postbilagor på en nätverksenhet. Målet är att låta användaren se nya dokument som har tagits emot och spara dem på rätt plats. Naturligtvis kommer vi att hantera processen för att extrahera information som ämne och vem dokumentet kom ifrån för att låta användaren förstå den allmänna informationen i dokumentet och detta kommer att sparas i en tabell. Dessutom måste användaren kunna se dokumentet för att läsa dess innehåll.

Lösning

Vi kan naturligtvis starta andra applikationer från åtkomst till att visa word-dokument i Word och pdf i Adobe Acrobat etc.  Men när en användare bara har en skärm att arbeta med innebär detta att byta från en applikation till en annan och om det finns flera dokumenttyper då naturligtvis innebär detta att öppna flera applikationer. Vi tillhandahöll därför en enkel lösning som skulle lansera dokumentet i ett nytt åtkomstformulär med fliklayout så att användaren enkelt kan hantera systemet. I exemplet nedan använder jag kod som läser filen från en given sökväg, som användaren behöver åtkomst till på sin dator. Alternativt, om dokumentet sparas i en SQL-tabell, kan vi ändra koden för att tillfälligt spara dokumentet på en lokal enhet och starta filen från den tillfälliga platsen. Om du använder den här metoden vill du också inkludera ytterligare kod för att radera den tillfälliga filen efter att ha visat/stängt formuläret.

Exempelformulär

Exempelformuläret som tillhandahålls bör startas förbi dokumentsökvägen i OpenArgs

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

On load-koden verifierar att sökvägen passerades och även om filen finns. Om allt är bra 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

Slutligen läser koden in dokumentet. Showdocument sub tar hand om de olika dokumenttyperna. De flesta dokumenttyper använder fallet else. Själva formuläret har en dold textruta som heter txtPath som lagrar värdet för OpenArgs (filnamn och sökväg) detta kan antingen vara en mappad enhet eller UNC. Webbläsarobjektet lagrar =[txtPath] som kontrollkälla. Word-dokument fungerar dock inte på samma sätt, och du måste först spara dokumentet som html. Jag använde en metod som ursprungligen skrevs av Crystal Long och gjorde några mindre ändringar.

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. Använda JDeveloper med MySQL Database och Oracle Database på AWS RDS, del 2

  2. I Oracle, är det möjligt att INFOGA eller UPPDATERA en post genom en vy?

  3. Oracle PL/SQL:Kontrollera om BLOB eller CLOB är tom

  4. java.lang.IllegalArgumentException:kolumnen '_id' finns inte