pdf in accesformulier tonen

MaitreJan

Gebruiker
Lid geworden
21 dec 2011
Berichten
58
ik wil in een accessformulier een pdf tonen, ieder record moet een verwijzing krijgen naar een pdf-document, zodat als je bladerd door de records je de pdf bekijkt.
wat wil ik graag is een knop om de pdf op te zoeken in in het record te paatsen en vervolgens te tonen in het formulier.
hoe kan ik dat doen?
ik werk met office 365 en onedrive
alvast bedankt Jan
ps misschien is dit al eens beschreven dan graag even verwijzen
 
Je vraagt twee verschillende dingen.

Voor het zoeken en kiezen van een (pdf) bestand gebruik je een "file dialoog". Maak een knop op je formulier en zet daar iets achter als:
Code:
Private Sub btnPDF_Kiezen_Click()
On Error GoTo Error_Afhandeling

With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "PDF=bestand kiezen"
    .AllowMultiSelect = False
    .Filters.Add "PDF-bestanden", "*.pdf"
    
    If .Show Then
        Me.PDFbestand = .SelectedItems.Item(1)
        PDF_tonen
    End If
    
End With

Einde:
    Exit Sub

Error_Afhandeling:
    MsgBox "Foutmelding: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Fout"
    Resume Einde

End Sub
Je ziet dat ik een procedure "PDF_tonen" aanroep. Die zorgt ervoor dat het bestand ook daadwerkelijk getoond wordt. Omdat je dat op meer plaatsen nodig hebt, heb ik er een aparte procedure van gemaakt. Ook bij het open van het formulier en het bladeren door records moet je zorgen dat het (juiste) bestand getoond wordt.
Voor het tonen van het bestand op je formulier gebruik je een webbrowser besturingselement.
De procedure PDF_tonen ziet er zo uit:
Code:
Sub PDF_tonen()
On Error GoTo Error_Afhandeling

    If Len(Nz(Me.PDFbestand, "")) = 0 Then
        Me.webPDF.Visible = False
    Else
        Me.webPDF.Visible = True
        Me.webPDF.ControlSource = "=" & Chr(34) & Me.PDFbestand & Chr(34)
    End If

Einde:
    Exit Sub

Error_Afhandeling:
    MsgBox "Foutmelding: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Fout"
    Resume Einde

End Sub
Zoals ik al zei, moet je ervoor zorgen dat die procedure ook bij het openen van en bladeren door het formulier uitgevoerd wordt (met andere woorden in de gebeurtenis "Bij aanwijzen" van het formulier:
Code:
Private Sub Form_Current()
On Error GoTo Error_Afhandeling

    PDF_tonen

Einde:
    Exit Sub

Error_Afhandeling:
    MsgBox "Foutmelding: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Fout"
    Resume Einde

End Sub
 
ik wil in een accessformulier een pdf tonen, ieder record moet een verwijzing krijgen naar een pdf-document, zodat als je bladert door de records je de pdf bekijkt.
Volgens mij vergeet Peter een essentieel onderdeel :). Nou is dat niet zo moeilijk op te lossen; je kunt het resultaat van de Filedialog routine vrij simpel opslaan in het gewenste veld van het actieve record. En om te voorkomen dat je continue een pdf bestand moet selecteren (en opnieuw opslaan) kun je ervoor kiezen om de PDF_Kiezen routine alleen uit te voeren als het tekstveld leeg is.

Als je eenmaal een bestand hebt gekozen, hoef je het immers alleen te laten zien. En aangezien je een veld hebt voor het bef bestand, kun je dat veld standaard koppelen aan het pdf object. Dan kun je er hooguit nog voor kiezen om dat onzichtbaar te maken als je nog geen bestand hebt. Al zou ik dat niet eens doen; je kunt de Bij Klikken gebeurtenis van het pdf object gebruiken om een bestand te selecteren. Dan heb je die extra knop ook niet nodig.

Kortom: de procedure kan een stuk korter en slimmer.
 
Volgens mij vergeet Peter een essentieel onderdeel :). Nou is dat niet zo moeilijk op te lossen; je kunt het resultaat van de Filedialog routine vrij simpel opslaan in het gewenste veld van het actieve record.
Volgens mij ziet @OctaFish een essentieel regeltje over het hoofd
Code:
Me.PDFbestand = .SelectedItems.Item(1)

En aangezien je een veld hebt voor het bef bestand, kun je dat veld standaard koppelen aan het pdf object.
Ik smacht naar de concrete uitwerking van dit cryptische verhaal :cool:.

Kortom: de procedure kan een stuk korter en slimmer.
Zien is geloven.
 
Terug
Bovenaan Onderaan