pdf in access

Status
Niet open voor verdere reacties.

emou

Gebruiker
Lid geworden
29 aug 2017
Berichten
22
ik zou een database willen maken om mijn aangekochte goederen in te geven met een verwijzing naar de ingescande factuur en / of garantiebewijs

kan dit?
 
Dat kan altijd; ik zou dan een tekstveld gebruiken met voldoende lengte als je lange padnamen hebt. Zelf doe ik dit altijd via een formulier waarin je met een FileDialog het bestand selecteert waarna een klik op OK dan de bestandsnaam opslaat in het tekstveld. Op het formulier kun je de pdf (of welk bestand dan ook, dat maakt helemaal niks uit) met een dubbelklik openen.
 
sorry maar ben nog maar aan beginnerscursus bezig

waar vind ik FileDialog
 
FileDialog is een Office opdracht, en die kan je dus altijd wel aanroepen. Daar zijn twee methoden voor: Late Binding of Early Binding. Dat zijn termen die je nu nog waarschijnlijk helemaal niks zeggen. De code uit het voorbeeld gebruikyt Late Binding, en dat houdt in dat hij eigenlijk altijd werkt, je hoeft niet met bibliotheken te rommelen. Dus voor jou nu wel handig.
Ik gebruik een combinatie van een aantal functies die bij elkaar dus wel precies doen wat jij wilt. In het voorbeeld heb ik een tekstvak PDF gemaakt, waar een dubbelklik gebeurtenis aan hangt. Die kijkt of er iets staat wat dan geopend wordt; bij een leeg tekstvak wordt de functie geopend die het bestand laat zoeken.
Kijk maar eens of je het aan de praat krijgt. In beginsel is het een kwestie van de functies in een (nieuwe of bestaande) module plakken.

Code:
Private Sub PDF_DblClick(Cancel As Integer)
    On Error GoTo Hell
    If Me.PDF & "" = "" Then
        PDF_Click
    Else
        Application.FollowHyperlink TempVars("varFactuurPad").Value & Me.PDF
    End If
    Exit Sub

Hell:
    If MsgBox("Het bestand '" & LCase(Me.PDF) & "' ontbreekt in de dossiermap; wil je het verwijderen uit de lijst?", vbYesNo) = vbYes Then
        Me.PDF = Null
    End If

End Sub

Code:
Private Sub PDF_Click()
Dim sFile As String, sDoc As Variant
    
        If IsNull(Me.Factuurnummer) Then
            Me.Factuurnummer = Factuurnummer
            TempVars.Add "varFactuurPad", fPadMaken(CurrentProject.Path & "\Klanten\" & Me.Factuurnummer.Value & "\")
        Else
            TempVars("varFactuurPad").Value = fPadMaken(CurrentProject.Path & "\Klanten\" & Me.Factuurnummer.Value & "\")
        End If
    
    sFile = BestandOpzoeken
    If sFile = "Annuleren" Then Exit Sub
    If Not Dir(sFile) = "" Then
        If InStr(1, sFile, "\") = 0 Then Exit Sub
        sDoc = Split(sFile, "\")
        Me.PDF = sDoc(UBound(sDoc))
        On Error Resume Next
        FileCopy sFile, TempVars("varFactuurPad").Value & "\" & sDoc(UBound(sDoc))
        Me.Repaint
    End If
End Sub

Code:
Public Function fPadMaken(sFolder As String) As String
On Error GoTo ErrorHandler
Dim sF As String
    sF = GetPathOnly(sFolder)
    If Dir(sF, vbDirectory) = "" Then
      sF = fPadMaken(sF)
      MkDir sF
    End If
    fPadMaken = sFolder
    Exit Function
    
ErrorHandler:
    Exit Function
End Function

Code:
Public Function GetPathOnly(sPath As String) As String
    GetPathOnly = Left(sPath, InStrRev(sPath, "\", Len(sPath)) - 1)
End Function

Code:
Function BestandOpzoeken(Optional Pad As String) As String
Dim dlgPicker As Object
Dim sType() As String, sFile As String
Dim tmp As String, sPad As String
Dim bCheck As Boolean
Dim vrtSelectedItem As Variant

    On Error GoTo Hell
    If Pad = "" Then sPad = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") Else: sPad = Pad
    If Right(sPad, 1) <> "\" Then sPad = sPad & "\"
    Set dlgPicker = Application.FileDialog(3)
    With dlgPicker
        .Title = "Selecteer een bestand."                           'De titel voor het venster
        .InitialFileName = sPad                                     'Waar moet het venster beginnen?
        With .Filters
            .Clear
            .Add "Alles", "*.*", 1                                  'Geen Beperkingen op bestandstype"
            .Add "Microsoft Word", "*.doc; *.docx; *.docm", 2       'Beperk de bestandstypes tot .doc
            .Add "Microsoft Excel", "*.xls; *.xlsx; *.xlsm", 3      'Beperk de bestandstypes tot .xls
            .Add "Adobe Reader", "*.pdf", 4                         'Beperk de bestandstypes tot .pdf"
            .Add "Afbeeldingen", "*.jpg; *.jpeg; *.png", 5          'Beperk de bestandstypes tot afbeeldingen
        End With
        .FilterIndex = 1
        .AllowMultiSelect = False                   'Slechts één bestand kiezen toegestaan
        .InitialView = 1                            'Bepaal weergave
        If .Show = -1 Then                          'Bepaal of gebruiker op OK-knop heeft geklikt.
            sFile = .SelectedItems(1)               'String wordt gevuld met geselecteerde bestand
        Else
            MsgBox "Er is op <Annuleren> gedrukt..."
            BestandOpzoeken = "Annuleren"
            GoTo Hell
        End If
    End With
    BestandOpzoeken = sFile
    
Hell:
    Set dlgPicker = Nothing

End Function
 
Laatst bewerkt:
sorry voor mij echt chinees

moet ik 1 van je voorbeelden kopieëren? Waarin? en dan ergens mijn pad van het desbetreffende document ingeven?

Bestaat er geen knop om naar het document te gaan

alvast bedankt voor de vele moeite die je doet
 
Vraag 1: ja
Vraag 2: in een aparte module, als je het algemeen wilt kunnen gebruiken. In ieder geval de functies
Vraag 3: het pad wordt door de functie nu automatisch aangemaakt op basis van de huidige locatie.
Vraag 4: (de vraag zonder vraagteken): nee, er is geen knop voor

Ik snap dat het chinees af welke andere taal dan ook voor je is; dit is hogeschool programmeren. (bij wijze van spreke dan). In ieder geval geen beginnerswerk. Maar ja, jij stelt de vraag :). Dus als je het niet zelf kan maken, dan zijn er twee opties: je zoekt iemand die de db voor je kan maken, of je er in ieder geval bij kan helpen, of je post jouw db mee bij de vraag, dan zet ik die functies wel even op zijn plek. Of iemand anders. Want dat is heel simpel en snel te doen. Mits je weet wat je doet natuurlijk :D
 
ik denk inderdaad dat werken met macro's voor mij te ingewikkeld is.

ik heb ondertussen wel gevonden hoe ik pdf's kan invoegen als bijlage, maar waarschijnlijk wordt mijn db zo snel te groot om deftig te werken.

hierbij mijn bestand in bijlage

alvast bedankt
 

Bijlagen

  • garantie.zip
    1,9 MB · Weergaven: 43
Als je een dag geduld hebt.. zal ik een bestand van mijn werk posten.
Ik werk heel graag in Acces.
Maar dit ging zo makkelijk in Excel.

Edit: ik heb hem al. ik gebruik hem op mijn werk al een aantal jaren.

Bij overdrachten van veel bestanden bij een onderzoek is het handig om een overzicht te hebben.
Bij zo een onderzoek maak ik een hoofdirectory aan met de naam van het onderzoek, in die map zet ik de excel file.
Alles wat bij een specifiek onderdeel van een onderzoek hoort zet in een aparte subdirectories. Dat zijn vaak pdf's, doc's en xls's bestanden.
Als ik rapporteer verwijs ik naar dat excel bestand.
Klaar met het onderzoek?
Dan genereer ik met de macro de inhoudsopgave van de mappen (subdirectories) en alles komt netjes overzichtelijk op een rij.
Mijn voorbeeld gaat over wat ik allemaal op internet besteld hen sinds 2014. Het meeste heb ik handmatig weggehaald.. heb er een paar als voorbeeld laten staan...
Het gaat mij dan vooral om de hele bestel geschiedenis goed te documenteren.. dus in principe print ik elke relevante pagina via Pdfcreator naar een multi-pagina pdf. Als ik nog pdf van de leverancier krijg dan sla ik die apart op of print die meteen mee als pdf als het digitaal aangeleverd wordt.
Papieren zaken, evt garantiebewijzen als het niet de rekening betreft kun je naar pdf inscannen of een fot met je mobiel maken en daar ook posten als jpg of printen naar pdf.
Voor Excel maakt het niet uit... alles wordt omgezet naar een aanklikbare link!
Het maakt ook niet meer uit hoeveel pdf's of jpg's je in een map hebt staan, ook al voeg je later nog data toe... werk het excel bestand even bij en je inhoudsopgave is weer up to date...

Inhoudsopgave.xls:
Vul de naam van de directory eerst in en draai vervolgens de macro mbv de knop.
Werkt het niet, dan heb je vermoedelijk vergeten om de ragdie soms bij het opstarten verschijnt "inhoud inschakelen" te activeren.
Als het goed is heb je nu het overzicht.
In kolom B de naam van de subdirectories (in datum volgorde)
in kolom C: de pdf's (in dit geval) die aanklikbaar zijn
Stel de breedte van B en C kolommen in naar wens (bovenaan)
Om niet teveel vervuiling te krijgen is het wel erg handig om de xls in die map te zetten waar de info staat...
Kies je bijv voor D: dan krijg je alle mappen en jun bestanden.. niet bepaald handig...

Na elke aankoop of naar keuze 1x per dag of per week ... draai je de macro en in een paar sec is het bijgewerkt.

Nu kun je met Ctrl+F of met de excel zoekfuncties super eenvoudig zoeken naar wat je zocht.
Het handige is dat je altijd iets uit de mappen weg kunt halen of erbij stoppen.. gedaan? Draai de macro in je xls en de inhoudsopgave is weer up to date.
En... je slaat geen pdf of andere docs in de xls op.. dus de xls blijft super klein....

Vaak is zo'n tool als dit al handig genoeg. Als je nog meer eisen hebt kun je altijd nog naar Access.
 

Bijlagen

  • Inhoudsopgave.xls
    403 KB · Weergaven: 64
Laatst bewerkt:
Met alle respect, maar zo'n excelletje kan natuurlijk van zijn levensdagen niet op tegen een goed opgezette database...
 
@route99: Uiteraard had ik dat gelezen. Maar waarom een excel oplossing aanbevelen in een Access vraag? I don't see the point....

Ik heb mijn code (enigszins aangepast aan jouw situatie uiteraard) in je db gezet. met een kleine toelichting onder de nieuwe velden. Jouw bijlageveld zit er ook nog in, maar dat kan dan uiteraard weg straks.
 

Bijlagen

  • garantie.zip
    1,3 MB · Weergaven: 62
Het Access bestand werkt (uiteraard ...wel), maar ik vind het wel meer klikken met deze oplossing.
De naam van de pdf verschijnt iid netjes in het daar toe bedoelde veld, behlave als je een 2e pdf toevoegt wordt dat niet vermeld.
Eigenlijk zou je dan een auto-grow oplossing willen heben zodat je de opslag van meerdere pdf's direct zichbaar hebt.
Mijn voorkeur zou dan zijn dat ze ook meteen aanklikbaar zijn net als in mijn excel file.

En je geeft een bijlagepad aan... dat is dus eigenlijk om hem te uploaden in de database.. want als ik een paar kleine pdf's toevoeg is ie al weer 500 kB gegroeid.....
Met veel en eventueel grote pdf's kan de database al heel snel aardig groot worden.

Je zou ook voor een root pad kunnen kiezen en daar onder met submappen werken en alleen een klikbare link naar het bewuste pdfje...
Zo doe ik het op het werk ook in Access. We hebben regelmatig pdfs van 20-60 pagina's en met nu ca 1000 items is de database nog maar steeds ca 6 MB groot.
Qua pdfs zou ik het even na moeten kijken, maar het zou me niets verbazen als dat meer dan 300 MB is.

Voor de inhoudsopgave heb ik toch voor het gemakt even voor excel gekozen, een bewuste keuze....als Access gebruiker... Het werkt uit e kunst en de drempel is voor gebruikers zeer laag (terwijl mijn Access DBs best wel intuïtief gebruikt kunnen worden....) hoor ik om mij heen.
 
De naam van de pdf verschijnt iid netjes in het daar toe bedoelde veld, behlave als je een 2e pdf toevoegt wordt dat niet vermeld.
Eigenlijk zou je dan een auto-grow oplossing willen heben zodat je de opslag van meerdere pdf's direct zichbaar hebt.
Hier hoor ik een Excel gebruiker, en geen database ontwerper... 't Is dat ik ze al heb, maar ik zou er kromme tenen van krijgen :). Dat kan en mag natuurlijk nooit, wat je hier voorstelt, en gelukkig doen we dat ook niet in databases. Daar hebben we namelijk, in tegenstelling tot Excel (en daarom moet je nooit een echte db in Excel willen bouwen) data-integriteit.

En je geeft een bijlagepad aan... dat is dus eigenlijk om hem te uploaden in de database.. want als ik een paar kleine pdf's toevoeg is ie al weer 500 kB gegroeid..... Met veel en eventueel grote pdf's kan de database al heel snel aardig groot worden. Je zou ook voor een root pad kunnen kiezen en daar onder met submappen werken en alleen een klikbare link naar het bewuste pdfje...
Heb je de oplossing wel goed bekeken? Ik wérk alleen maar met pad- en document verwijzingen. Er komt dus geen enkel bestand in de db te staan, en groeien doet-ie daardoor ook nauwelijks. Ik heb, voor TS, het bijlageveld laten staan, maar dat moet uiteraard weg. Dat is namelijk de boosdoener, niet mijn simpele tekstveldjes. Die overigens wel iets kleiner kunnen, maar dit terzijde.
 
Eea is vast dan nog te beveiligen...
Ik heb overigens nog nooit een datbase in Excel gemaakt.. dus wat dat betreft .. de plank mis...
Het excel bestand heb ik dus Inhoudsopgave.xls met geen enkele claim dat het om een DB gaat, maar om heel snel en duidelijk een overzicht te maken... over DB nog steeds geen woord..
Wist niet dat de DB-mensen daardoor van slag raken... ik iig niet...

Je hebt wel een punt tav het bijlageveld: dat had ik niet gezien. Excuus tav dat punt.

Mijn ervaring met Access gaat terug naar de eerste versie, meen dat het bij Office 95 was. Heb afgelopen jaar alle databases op de afdeling omgezet naar de laatste (Acces 2106; we kwamen van O-2003, 2007/2010 e.d hebben we tav Excel/Acces veelal overgeslagen ivm veel compatibiliteitsproblemen, vooral met Excel, dat zou heel veel herschrijf geweest zijn, vooral in de macros vooral mbt tot ingewikkelde modellen van mijn collega, dat deel heeft hij zelf gedaan.
O-2106 werkt vreemd genoeg veel beter samen met O-2003/2010 dan O-2003/2010 dat deden met dezelfde O-2007)...
 
Laatst bewerkt:
Heb bestand geprobeerd en werkt meer dan perfekt.

hartelijk dank.

kan ik dit veld ook kopiëren en plakken in een andere DB?
 
Over welk veld gaat het?
 
Laatst bewerkt:
ik bedoel als ik in een andere db ook een link naar een document wil maken kan ik op een eenvoudige manier die 2 invulvelden kopiëren en plakken?
 
Een veld moet je toevoegen in de ontwerpmodus doen, zo te zien kan het (heb effe gecheckt)
Kies wel de hele lijn waar het staat..
Heb het zelf nog nooit eerder gedaan tussen 2 DB's.
 
Ik heb overigens nog nooit een datbase in Excel gemaakt.. dus wat dat betreft .. de plank mis...
Ik heb niet gezegd dat je databases bouwt in Excel; ik zei dat ik een Excel gebruiker hoor. Je gebruikt de terminologie en logica van Excel gebruikers, meer niet. Jouw programma om 'snel en duidelijk' een overzicht te maken, is absoluut niet sneller en duidelijker dan ik in een database kan maken, en vermoedelijk maak ik het ook nog eens sneller en veiliger. Dus waar hebben we het eigenlijk over? Ik zou zeggen: TS wil graag een database, laten we daar dus een oplossing voor aandragen en stoppen met Excel voorbeeldjes :).
 
Pdf in acces

Dat is in feite heel simpel
Bij de opmaak van een tabel heb je voor elk veld een aantal opties. Kies de optie "Hyperlink"

Als je daarna de tabel opent klik je met de rechterknop op het hyperlinkveld kies optie "hyperlink" en dsn eventueel "Hyperlink bewerken" en dan gaat de verkenner open en zoek daarmee naar je pdf bestand. De link wordt dan in het hyperlinkveld opgeslagen.
Als daarna de tabel opent en je klikt op het linkveld gaat de pdf automatisch open.
Ik gebruik dit dagelijks. Ik heb al wat ik aan muziekpartituren bezit ingescand als .pdf en ik heb een tabel met titels enz. in die tabel heb ik ook een hyperlijnkveld het volstaat om er op te klikken om de betreffende partituur op het scherm weer te geven.
Grts
Makkikis
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan