sql >> Database >  >> RDS >> Access

Voorvertoning van documenten in Microsoft Access-formulier

Voorvertoning van documenten in Microsoft Access-formulier

Projectomvang

We hebben onlangs een documentcentrum aan een project toegevoegd waarmee gebruikers documenten zoals pdf, word, txt en afbeeldingen aan een project kunnen toevoegen. Bovendien hebben ze een automatisch proces ingesteld om inkomende e-mails te lezen en de e-mailbijlagen op een netwerkstation op te slaan. Het doel is om de gebruiker in staat te stellen nieuwe documenten die zijn ontvangen te bekijken en op de juiste locatie op te slaan. Natuurlijk zullen we het proces beheren om informatie te extraheren, zoals onderwerp en van wie het document afkomstig is, zodat de gebruiker de algemene informatie van het document kan begrijpen en dit zal in een tabel worden opgeslagen. Bovendien moet de gebruiker het document kunnen bekijken om de inhoud ervan te kunnen lezen.

Oplossing

We kunnen natuurlijk ook andere toepassingen starten vanuit toegang om Word-documenten in Word en pdf in Adobe Acrobat enz. te bekijken. Als een gebruiker echter maar één scherm heeft om mee te werken, betekent dit dat u overschakelt van de ene toepassing naar de andere en als er meerdere documenttypen zijn, Dit betekent natuurlijk dat je meerdere applicaties moet openen. Daarom hebben we een eenvoudige oplossing geboden die het document in een nieuw toegangsformulier met tabbladindeling zou lanceren, zodat de gebruiker het systeem gemakkelijk kan beheren. In het onderstaande voorbeeld gebruik ik code die het bestand van een bepaald pad leest, waartoe de gebruiker toegang nodig heeft op zijn computer. Als alternatief, als het document is opgeslagen in een SQL-tabel, kunnen we de code wijzigen om het document tijdelijk op een lokale schijf op te slaan en het bestand vanaf de tijdelijke locatie te starten. Als je deze methode gebruikt, wil je ook extra code toevoegen om het tijdelijke bestand te verwijderen na het bekijken/sluiten van het formulier.

Voorbeeldformulier

Het verstrekte voorbeeldformulier moet worden gestart langs het documentpad in de OpenArgs

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

De code bij het laden verifieert dat het pad is doorgegeven en ook of het bestand bestaat. Als alles goed is, gaat het proces verder.

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

Ten slotte laadt de code het document. De Showdocument sub zorgt voor de verschillende documenttypes. De meeste documenttypen gebruiken de else-case. Het formulier zelf heeft een verborgen tekstvak genaamd txtPath waarin de waarde van de OpenArgs (bestandsnaam en pad) wordt opgeslagen. Dit kan een toegewezen schijf of UNC zijn. Het webbrowserobject slaat =[txtPath] op als controlebron. Word-documenten werken echter niet hetzelfde en u moet het document eerst opslaan als html. Ik heb een methode gebruikt die oorspronkelijk is geschreven door Crystal Long en heb enkele kleine wijzigingen aangebracht.

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. SINH() Functie in Oracle

  2. Hoe de zorgsector databases gebruikt

  3. SQLite REPLACE-instructie

  4. Hoe evaluatie van subquery te forceren voordat u zich aansluit bij / naar een buitenlandse server duwt?