link naar bestandsmap

Status
Niet open voor verdere reacties.

PWJvdS

Gebruiker
Lid geworden
14 nov 2023
Berichten
14
In een veld wil ik een link naar foto's maken, met voor elk record een eigen foto.
Ik heb dat nu gedaan met het veldtype "Bijlage", (en dat werkt) maar ik heb het idee dat nu alle foto's in Access worden opgeslagen.

Hoe maak ik een koppeling voor elk record met de bijhorende foto?
opm. De foto's moeten in Access wel zichtbaar zijn.
 
Als je een link op wilt slaan, moet je het veldtype hyperlink gebruiken.
 
Dat had ik al geprobeerd, maar dan krijg ik alleen een icoontje en niet de afbeelding.
 
... maar ik heb het idee dat nu alle foto's in Access worden opgeslagen.
Lijkt mij logisch; een bijlageveld slaat de bijlagen nu eenmaal in de database op.. Nooit gebruiken, is mijn advies. Vergeet de tip van Peter, want die klopt niet. Gebruik een tekstveld om de padverwijzing (en fotonaam; persoonlijk gebruik ik een vast pad voor de foto's en sla dus alleen de naam op) op te slaan. Op een formulier gebruik je dan de code FollowHyperlink om de foto's te tonen op je formulier. Die code zet je in de gebeurtenis OnCurrent (Bij aanwijzen) zodat bij elk record de juiste foto wordt opgehaald.
 
Op een formulier gebruik je dan de code FollowHyperlink om de foto's te tonen op je formulier. Die code zet je in de gebeurtenis OnCurrent (Bij aanwijzen) zodat bij elk record de juiste foto wordt opgehaald.
De optie "Bij aanwijzen" zie ik niet in in het lijstje staan.
 

Bijlagen

  • Bij aanwijzen.jpg
    Bij aanwijzen.jpg
    42,4 KB · Weergaven: 4
Dat komt omdat je naar de eigenschappen van een tekstvak zit te kijken. De gebeurtenis Bij Aanwijzen vindt plaats als je van record wisselt. En dat is dus een gebeurtenis die op formulierniveau plaats vindt.
 
Het begint een (klein) beetje te dagen.
Bij formuliereigenschappen staat achter 'Bij aanwijzen' nu: =[FollowHyperlink]
Maar het gewenste resultaat levert dat nog niet op.
 
Bij formuliereigenschappen staat achter 'Bij aanwijzen' nu: =[FollowHyperlink]
Ik zou niet weten wat dat betekent.

Er hoeft volgens mij sowieso niets te gebeuren "bij aanwijzen". Als je veldtype van het tabelveld goed zet en daarna het veld toevoegt aan het formulier, zou het moeten werken (heb ik proefondervindelijk vastgesteld).
Verder is natuurlijk ook van belang met wat en hoe je het veld vult (complete pad en bestandsnaam van de afbeelding).
 
Trek je niets aan van de opmerking van Peter, want die klopt niet: de gebeurtenis <Bij aanwijzen> is bij uitstek de juiste gebeurtenis hier.
Code:
Private Sub Form_Current()
    FollowHyperlink Me.Foto.Value, NewWindow:=True
End Sub
Overigens zou ik het heel anders oplossen; zet op het (enkelvoudige) formulier een Afbeeldingsobject Voorbeeldje met de naam "Afbeelding" en het veld met de fotonamen heet dan "Foto". De foto's heb ik in een map op de D-schijf gezet, dus de foto's hebben dan deze naamconstructie:
"D:/Test/Foto 1.jpg", "D:/Test/Foto 2.jpg" etc. Bij jou is het pad, en zijn de namen uiteraard anders. Dan ziet de code er zo uit:

Code:
Private Sub Form_Current()
    Me.Afbeelding.Picture = Me.Foto.Value
End Sub

Simpeler kunnen we het echt niet maken :).
 
Als je veldtype van het tabelveld goed zet en daarna het veld toevoegt aan het formulier, zou het moeten werken (heb ik proefondervindelijk vastgesteld).
Weet je dat zeker? Ik ben er namelijk 100% van overtuigd dat het niet werkt als je een tekstveld met daarin de pad en naam van een foto op een formulier zet, dat Access dan uit zichzelf de foto laat zien. Dat gebeurt dan weer wél met een bijlage veld, maar daar wil TS (en terecht, in mijn ogen) vanaf.
 
Simpeler kunnen we het echt niet maken :).
Da's vast en zeker waar voor ervaren gebruikers, maar aangezien mijn ervaring nog in de kinderschoenen staat klinkt dit nog altijd behoorlijk ingewikkeld.
Zoals bijvoorbeeld de foutmelding (lijkt wel Hongaars) die ik op het scherm kreeg nadat ik de code had ingevoerd.
 

Bijlagen

  • foutmelding.jpg
    foutmelding.jpg
    43 KB · Weergaven: 7
Laatst bewerkt:
Je gebruikt zo te zien niet mijn code, maar die van Peter. Daar heb ik geen ervaring mee :).

Ik raad je dus nogmaals aan om mijn werkwijze te gebruiken:
1. Maak in je tabel een tekstveld met de naam Foto (om mijn code letterlijk over te kunnen nemen)
2. Vul daarin het volledige pad in van de foto + de naam + de extensie (niet vergeten die laatste :))
3. Zet op je formulier het veld [Foto] als het er nog niet staat
4. Voeg een afbeelding toe aan het formulier. Maakt niet uit welke, de oorspronkelijke foto moet je toch verwijderen
5. Ga naar de Eigenschappen van het Afbeeldingsobject en maak in de groep <Opmaak> de eigenschap <Afbeelding> leeg
6. Verander eventueel de eigenschap Naam op het tabblad <Overig> naar "Afbeelding"
7. Ga nu naar de Formulier Eigenschappen en klik op de knop met drie puntjes achter de eigenschap <Bij aanwijzen>
Je zit nu in de procedure OnCurrent.
8. Daar plak je deze regel:
Code:
    Me.Afbeelding.Picture = Me.Foto.Value

Nu kun je het formulier testen. En zou je bij het bladeren dus de foto's moeten zien. Het is dus een oplossing met simpele tekstvelden (mag geen probleem zijn), een Afbeelding op je formulier (ook een standaard handeling) en één regel code. En blijf toch maar uit de buurt van het Hyperlink veld :).
 
Je gebruikt zo te zien niet mijn code, maar die van Peter.
Ik weet niet waar je mijn "code" gezien hebt, maar mijn voorstel werkt zonder code. Alleen een hyperlink veld waar je op kan klikken waarna de foto zichtbaar wordt.
Toegegeven: de oorspronkelijke vraag is niet helemaal eenduidig. TS vraagt om een "link naar foto's" (geen code nodig) en stelt de eis "de foto's moeten in Access wel zichtbaar zijn" (beetje code nodig).
 
Het stappenplan lijkt duidelijk, maar het veld 'foto' op het formulier plaatsen lukt niet ("Microsoft kan het niet toevoegen").
Begin het spoor aardig bijster te raken, maar gelukkig heb ik Valium in huis.
 
Ik snap je laatste opmerking niet helemaal. Wat heb je precies gedaan? Als je niet eerst een veld in de tabel hebt gemaakt met de naam “Foto” loop je al vast. Heb je dat wél gedaan, dan moet je in het Ontwerp stadium van het formulier de Lijst met Velden openen, dan staat het veld in de lijst. En dat sleep je dan naar je formulier. Vanaf dat punt moet het werken.

Zoniet: met een kopietje van de database is het in 20 seconden gefixt :).
 
Beetje wonderlijk formulier om te zien ik zie geen enkel bestaand veld op je formulier? Ik werk ook nooit met die gruwelijke ‘tabellen’, en zeker niet op een leeg formulier. Niet dat dat uitmaakt voor een formulier of het probleem. Maar zet er eens een leeg tekstvak in (veld in de veld kolom, zodat het label in de label kolom valt. Al denk ik niet dat dat het probleem is. Hoewel? ;))
Als je dan van dat niet-gebonden tekstvak de Eigenschappen opent, moet je het veld Foto daaraan kunnen koppelen. Zo niet, dan deugt er iets niet aan het formulier.
 
Ik denk dat we op deze manier vastlopen. In een poging het topic vlot te trekken heb ik een sterk vereenvoudigd voorbeeldje gemaakt. Kijk maar eens of dat voldoet. Merk op dat ik geen hyperlink-veld heb gebruik maar een gewoon tekstveld. Als je de afbeelding alleen maar wilt laten zien in een Access formulier volstaat dat.
Voor het gemak heb ik ook een knop toegevoegd op het formulier waarmee je een afbeelding kunt zoeken en meteen het veld in de tabel vult..

Overigens doen de velden die ik in jouw plaatje zag wel de nodige alarmbellen bij mij rinkelen. Met name de diverse velden met als naam een lettertype. Benieuwd wat je daar mee doet. Maar dit geheel en al terzijde.
 

Bijlagen

Peter heeft mij zijn database gemaild; die heb ik inmiddels aangepast en werkend gemaakt. Moet ‘m nog wel even terugsturen, maar dat doe ik vanavond.
 
Overigens doen de velden die ik in jouw plaatje zag wel de nodige alarmbellen bij mij rinkelen. Met name de diverse velden met als naam een lettertype.
Niet nodig; dit zijn a) geen gereserveerde namen en b) Ja/Nee velden om de subtypes van het lettertype aan te geven. En dat mag best op deze manier, al kan je dat natuurlijk ook met één veld bereiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan