Afbeelding invoegen in formulier

Status
Niet open voor verdere reacties.

Lacaes

Gebruiker
Lid geworden
20 apr 2013
Berichten
35
Ik hoop dat iemand mij kan helpen met het volgende. Ik maak voor mijn werk een database met gegevens over merkregistraties. Ik heb 1 hoofdtabel met een aantal unieke velden. Veel van de overige informatie in deze tabel komt uit andere tabellen, via lookup velden (bijv. land waar de registratie geldig is, soort merk (woord of logo), etc.). Een aantal van de registraties bestaat uit woorden (bijv. ADIDAS), maar er zitten ook een aantal logo's tussen (bijv. de drie strepen van ADIDAS). Hetzelfde logo kan geregistreerd zijn in meerdere landen. Om te beginnen heb ik een aparte tabel met afbeeldingen gemaakt volgens de uitleg op de website http://support.microsoft.com/kb/285820. Ook heb ik een formulier gemaakt op basis van deze tabel. Tot zover geen probleem. Het lukt me echter niet om de afbeeldingen weer te geven in een formulier dat ik heb gebaseerd op de hoofdtabel. Of ik krijg helemaal geen afbeeldingen te zien in het formulier, of ik krijg alleen die records te zien waar een afbeelding aan is gekoppeld, dus niet meer de records van de woordmerken. Wat doe ik verkeerd?
 
Het lijkt mij logisch wat er gebeurt: zo te zien heb je één veld waarin je zowel tekst als afbeeldingen opslaat. Dus hoe moet je formulier nu bepalen wat het moet laten zien? Een goede database heeft eenduidige gegevenstypes voor de velden, en jij combineert twee soorten velden (tekst en afbeelding) in één veld. Gaat dus niet werken!
 
Bedankt voor je reactie. Wat je zegt klinkt logisch, maar ik begrijp (nog) niet waar het bij mij verkeerd gaat. Ik ben er al dagen mee bezig. Ik heb een aparte tabel voor de afbeeldingen gemaakt met verwijzingen naar het pad op mijn harde schijf waar de afbeeldingen staan. Ik begrijp dat dit de beste manier is om de grootte van de database te beperken. Op het formulier dat ik op basis van deze afbeeldingentabel heb gemaakt zie je de afbeeldingen ook keurig verschijnen. Het gaat echter mis bij het formulier dat ik heb gemaakt op basis van de hoofdtabel van mijn database, de tabel waar de belangrijkste gegevens van de merkregistraties bij elkaar komen. Op dit hoofdformulier zou bij sommige van de records een afbeelding dienen te verschijnen van een logo. Dit logo kan hetzelfde zijn bij een aantal records omdat een logo in meerdere landen kan zijn zijn geregistreerd (vandaar ook dat ik een aparte tabel voor de afbeeldingen heb gemaakt). Bij andere records, die van de woordmerken, dient helemaal geen afbeelding tevoorschijn te komen. Om dit te bereiken, heb ik in de hoofdtabel een lookup veld opgenomen door deze te linken aan mijn afbeeldingentabel. Bij die records waar een afbeelding dient te verschijnen, staat in de hoofdtabel een verwijzing naar het pad van de afbeelding op mijn harde schijf. Dat is dezelfde verwijzing die in de afbeeldingentabel staat. Deze verwijzing staat ook op het formulier dat ik op basis van de hoofdtabel heb gemaakt. Vervolgens heb ik het "Afbeelding" besturingselement toegevoegd aan mijn formulier. Nu is het natuurlijk de bedoeling dat de juiste afbeelding wordt weergegeven als ik een verwijzing naar een afbeeldingspad heb opgenomen, maar dat werkt niet. Of ik zie telkens dezelfde afbeelding, zelfs bij de records waar helemaal geen afbeelding zichtbaar dient te zijn. Of ik krijg wel de juiste afbeeldingen te zien bij de juiste records, maar dan zijn de records waar geen afbeeldingen aan zijn toegevoegd (van de woordmerken) niet meer zichtbaar. Hier gaat het dus verkeerd en het zou mijn dag weer helemaal goed maken als je me een stap verder kunt helpen.
 
Ikzou in ieder geval afstappen van het idee om beide logo-typen in één veld op te slaan. Gebruik één veld voor de verwijzingen naar de tabel Afbeeldingen, en een ander veld voor de Woord logo's. Je vult dan één van de twee velden in, of beiden. Zelf gooi ik bij db's die vraagstellers posten altijd als eerste de opzoeklijsten weg uit de tabellen, en dat raad ik jou ook aan. Opzoeklijsten (op basis van tabellen) horen niet thuis in een tabel, maar op een formulier. In de tabel wil je zien wat er is opgeslagen, en dat is in jouw geval een verwijzing naar het RecordID van Afbeelding.
Desnoods maak je nog een derde veld met een keuzelijst Afbeelding of Logotekst, zodat je kunt aangeven welke van de twee gebruikt moet worden op het formulier.
Op je formulier koppel je het Afbeeldingen object aan het tekstvak/keuzelijst Afbeeldingslogo, en het opgemaakte tekstvak aan Tekstlogo. Bij de gebeurtenis <Bij aanwijzen> bepaal je welk object zichtbaar moet zijn, en ververs je het logo.
 
Ik gebruik al twee velden voor beide type merken. Het eerste veld vermeldt alleen of het een woordmerk of logo betreft. Het andere veld vermeldt het pad naar het logo en daarbij zou dan ook een afbeelding van het logo te zien moeten zijn. De meeste tabellen die ik heb, bestaan enkel uit data zonder opzoeklijsten. Alleen in de hoofdtabel komen de gegevens uit deze tabellen samen en gebruik ik wel diverse opzoeklijsten. Dat is toch ook de bedoeling bij een relationele database zodat je niet elke keer dezelfde gegevens hoeft in te typen? Ik krijg trouwens nog steeds niet de goede afbeeldingen te zien waar ik dat wil. Kan ik misschien een lege kopie sturen van mijn db zodat je er eens naar kan kijken.

Eric
 
Dat is toch ook de bedoeling bij een relationele database zodat je niet elke keer dezelfde gegevens hoeft in te typen?
Nee, dat is niet de bedoeling van een relationele database. Die omschrijving geeft alleen aan hoe de gegevens zijn georganiseerd in je database, verder niks. Relaties gebruik je in Access om Referentiële Integriteit af te dwingen. Keuzelijsten zijn in mijn optiek alleen bedoeld voor tekstuele opzoeklijsten (Man, Vrouw bijvoorbeeld voor geslacht) en voor formulieren. In je tabel moet je altijd kunnen zien wat er letterlijk in wordt opgeslagen, en met keuzelijsten op basis van tabellen is dat niet het geval.
Volgens je eigen beschrijving gebruik je niet al twee velden voor beide typen; het eerste veld dat je beschrijft geeft alleen aan wàt het is (wat ik als derde veld voorstelde dus), en het andere veld bevat nog steeds een combinatieveld. En daar moet je vanaf.
 
Ik kwam er nog steeds niet uit en wat ik nu heb gedaan is het volgende. Ik heb in mijn hoofdtabel een tekstveld opgenomen met daarin het pad naar de afbeelding(en) indien van toepassing. Dit veld heb ik ook opgenomen in mijn formulier. Vervolgens heb ik het besturingselement Afbeelding opgenomen in mijn formulier met als besturingselement bron het veld met het pad naar de afbeelding. Alles lijkt nu naar behoren te werken. Ik vraag me alleen af of dit ook de beste manier is. De gebeurtenis <bij aanwijzen> maak ik geen gebruik van. Ook maak ik nu geen gebruik meer van de tabel afbeeldingen en een opzoeklijst, dus elke keer moet ik het pad naar de afbeelding in de hoofdtabel opnieuw opnemen. Ik begrijp ook niet helemaal waarom je adviseert om helemaal geen gebruik meer te maken van opzoeklijsten in tabellen. In mijn hoofdtabel maak ik nu best wel veel gebruik van opzoekvelden. Een aantal bestaan slechts uit een aantal records (minder dan 10). Er zitten echter ook een aantal grotere opzoeklijsten tussen, o.a. een landenlijsten en een merkeigenarenlijst. Als ik jouw advies opvolg, zou ik deze gegevens elke keer opnieuw moeten invullen bij nieuwe records, ipv dat ik ze veel gemakkelijke kan selecteren uit de opzoeklijst. Ook zie ik best wel veel voorbeelden van db waarin bij tabellen ook gebruik wordt gemaakt van opzoeklijsten. Bijvoorbeeld bij orders en producten. In de ordertabel wordt dan een opzoeklijst gebruikt voor de diverse producten die worden besteld.
 
Ik begrijp ook niet helemaal waarom je adviseert om helemaal geen gebruik meer te maken van opzoeklijsten in tabellen. In mijn hoofdtabel maak ik nu best wel veel gebruik van opzoekvelden.
Tabellen zijn er om gegevens in op te slaan. Formulieren zijn bedoeld om gegevens in te voeren en te muteren. Op formulieren gebruik je keuzelijsten (met invoervak) vanwege de redenen dat je makkelijker gegevens kunt opzoeken. In de tabellen wil je echter (althans: dat zou je moeten willen) altijd de opgeslagen gegevens kunnen willen zien. Ook al omdat je met exporteren die gegevens exporteert, en niet wat je ziet in je tabel. Kortom: je draait jezelf een klein rad voor de ogen als je keuzelijsten gebruikt in een tabel. Uitzondering: keuzelijsten op basis van lijsten, zoals Aanhef (Heer, Mevrouw) en geslacht (Man/Vrouw) etc. Bovendien kun je in formulieren keuzelijsten van elkaar afhankelijke maken; dat kan in tabellen niet.
Dat je in veel voorbeelden wèl keuzelijsten ziet in tabellen, wil niet zeggen dat jij dat ook moet doen. Vooral Microsof geeft er regelmatig blijk van weinig voeling te hebben met databases, gezien ook de nieuwe 'verbeteringen' die ze steeds maar weer blijven inbouwen.
 
Bedankt voor alle hulp zover. Ik heb je advies opgevolgd en alle opzoeklijsten uit mijn tabellen verwijderd. Je ziet nu inderdaad precies wat er is opgeslagen. Het druist wel in tegen elke voorbeeld database die ik tegenkom, maar na er beter over nagedacht te hebben, lijkt het mij ook het beste. Oorspronkelijk werkte ik ook veel met autonummering velden als primaire sleutel in mijn tabellen. Ik ben ook hier van afgestapt en gebruik nu meer logische codes/afkortingen zodat ook uit de tabel wat duidelijker blijkt waar het om gaat, al is dit waarschijnlijk niet echt van belang omdat je toch meer met formulieren werkt. Nog een vraagje over de afbeelding op het formulier. Deze komt keurig tevoorschijn in het formulier als ik in mijn hoofdtabel het veld met het volledige pad naar de afbeelding opneem, dit veld vervolgens opneem op het formulier, en met het object afbeelding verwijs naar dit pad. Ik maak echter liever gebruik van een aparte tabel afbeeldingen met twee velden, een veld voor een ImageID en een veld met het pad naar de afbeelding. Als ik deze afbeeldingentabel link met mijn hoofdtabel kan ik in het formulier een veld opnemen waardoor het ImageID zichtbaar wordt. Er verschijnt dan uiteraard nog geen afbeelding, maar hoe zorg ik er nu voor dat deze wel zichtbaar wordt. Eerder heb je aangegeven dat ik dan bij de gebeurtenis <Bij aanwijzen> bepaal welk object zichtbaar moet zijn, en het logo moet verversen. Hoe doe ik dat precies?

Eric
 
Als je het formulier uitbreidt met de extra tabel, en daar het veld met de padverwijzing uit gebruikt, verandert er niets aan je formulier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan