Opgelost ole object in access

Dit topic is als opgelost gemarkeerd

jan62

Gebruiker
Lid geworden
19 jan 2010
Berichten
113
Goedemiddag,

Ik heb een database gemaakt in Access waar ik in de tabel een ole-object record heb waar ik als ik er op klik een foto binnenhaal maar nu wil ik als extra optie klikken op de foto in de database en dan een grotere foto laat zien, heeft iemand een idee hoe zoiets werkt ik denk in de ontwerpweergave programma code toe te voegen maar weet niet hoe die eruit moet zien
 
Laat ik beginnen met te zeggen dat ik het een heel slecht idee vind om foto's (en andere grote objecten zoals bestanden) in de database op te nemen. Voordat je het weet is je database te groot, en zit je vast. En het is ook nergens voor nodig; ik zie althans de voordelen niet. Sterker nog: ik heb nog nooit in 40 jaar bouwen een database gemaakt iof nodig gehad) met een Bijlageveld.

Wat ik wél gebruik: ordinaire tekstvelden waarin ik een verwijzing naar het bestand in opneem. Dus in ieder geval de bestandsnaam van de foto. En, als je met verschillende mappen werkt, ook de volledige padverwijzing. (Ook geen favoriete oplossing van mij.)
In het formulier dat je op die tabel gebruikt maak je dan een afbeeldingsobject dat je koppelt aan het veld waarin de padnaam+fotonaam is opgenomen. En meer heb je niet nodig: als je het formulier opent, kun je keurig door de records bladeren en krijg je de foto te zien.
Wil je de foto groter? Dan zijn er verschillende oplossingen.
1. Een pop-up formulier dat opent met een dubbelklik op de foto in het formulier en waarin de foto groter wordt weergegeven
2. Met dubbelklikken open je de default foto-editor, waarin je de foto naar hartelust kan vergroten/verkleinen, aanpassen etc.

Er zijn er meer te bedenken, maar deze twee gebruik ik het vaakst. Maar dus nooit foto's opslaan in de database :).
 
Hoi Octafish,
Het is heel lang geleden dat je mij regelmatig hebt geholpen met tips , ik was er ondertussen achter dat als ik op het ole.object dubbel klikte de foto editor werd geopend, ik ga nu kijken of het mij lukt om een pop-up formulier te openen en ik ga kijken of het ook met een pad verwijzing naar behoren gaat werken, groet en bedankt,
 
Hoi, Het is mij gelukt om een pop-up formulier te openen zodra ik dubbelklik op de foto maar deze is leeg, er zal denk ik ergens en stukje procedure aan moeten zijn gekoppeld en dat begrijp ik niet hoe dat er dan uit moet gaan zien, kan je mij daar bij helpen
 
Geen probleem; post een (geanonimiseerd) voorbeeldje!
 
Ik probeer een bestandje gezipt van 128 mb bij te voegen maar dat is te groot
 
Om te kunnen 'prutsen' in een database, hebben we maar een paar scores nodig, zolang de inhoud van die records maar representatief is voor de vraag. Bij een grootte van 128 Mb vermoed ik dat de afbeeldingen nog in de database zitten. Snap je nu waarom ik dat een heel slecht idee vind? :).
Verwijder dus alles wat niet nodig is (maak eerst een kopie van de database), comprimeer die dan en maak er een zip file van. Dat zou de grootte binnen de 2Mb moeten krijgen.
 
Dit is een klein voorbeeldje. optie 1 is als je op de bovenste foto klikt dan opent er een pop-up formulier waar ik een foto zou willen zien, Op dit moment wil hij ook een Ole object toevoegen en dat is niet nodig. en om in de database geen foto's te plaatsen maar een verwijzing naar de foto's die in een map staan op de pc loop ik hier vast. per doos kunnen er 1 tot 3 puzzel zitten en de doos heeft een nummer.
 

Bijlagen

Ik ben alvast begonnen met het aanpassen van je database, maar ik heb alvast een klusje voor je. De huidige opzet is namelijk (in mijn ogen) heel erg slecht. Ik weet niet wat je voor ogen hebt, maar in een database sla je bij voorkeur unieke gegevens op in één record. Dus als je een tabel maakt met puzzels, dan krijgt elke unieke puzzel_ID één puzzel, met de naam, de doos en de foto. Meer niet.

Jij hebt per record drie puzzels, en drie foto's. Dat hoort dus niet in mijn optiek. In je voorbeeldje heb je zelfs een aantal titels ingevuld in de eerste kolom (Puzzel 1) en een aantal records met alleen een puzzel in het veld Puzzel 3. Dat is ongehoord, want hoe kun je op basis daarvan nu een net overzicht maken? Ik heb die opzet dus aangepast, en de redundante velden verwijderd.

Nogmaals: ik weet niet wat je bedoeling is, maar dit hoort dus niet zo. Als je al meerdere gegevens van één puzzel wilt vastleggen, dan doe je dat met een gekoppelde tabel. Dus als je per puzzel 1, 2, 3 of meer foto's wilt vastleggen, dan maak je een aparte tabel Puzzel_Foto waarin je de foto gegevens én het puzzel_ID opslaat met dus een één |(puzzel) op veel (de foto's) relatie.

Ik raad je dus aan om zo snel mogelijk je structuur eens onder het licht te houden, en aan te passen!
Wordtd vervolgd :).
 
Oke ik ga daar mee bezig en kijk of dat lukt, ik snap dat je met jou ervaring als specialist dit zo ziet
 
Beschrijf even wat je bedoeling is met deze database; als we dat weten kunnen we beter(e) tips geven :).
 
Ondertussen kun je even naar deze database kijken. Ik heb de formulieren omgezet naar wat ik logisch vind, dus met één foto en eén naam per puzzel. Daarnaast heb ik een map Afbeeldingen gemaakt met daarin wat lukrake foto's die bij de puzzelnamen passen. Die map kun je kopiëren (als je hem al niet uitpakt in de map waarin de database ook staat) naar de map waar de database staat.

Als je een nieuwe puzzel toevoegt, of één van de velden met daarin de naam van de foto leegmaakt, dan kun je door in het foto veld te dubbelklikken, een nieuwe foto toevoegen. Heb je een foto op je formulier, dan kun je daarop klikken (één klik is genoeg) en dan wordt de popup getoond met een grote foto. Als je dan op die popup foto klikt, wordt dat formulier weer afgesloten en kun je verder op het Puzzels formulier.

De map met foto's is aan de grote kant, dus die heb ik gesplitst. Met WinRar kun je die weer uitpakken.,
 

Bijlagen

Dit is perfect en mooi, ik had ondertussen wel dingen aangepast zoals je omschreef, maar ik liep vast op als ik de foto toevoegde en erop klikte wel de foto kreeg in een pop-up maar kon het niet goed krijgen deze weer weg te klikken ook de foto toevoegen deed ik nog met het Ole-object toevoegen en dat zijn veel handelingen. er hoeft wat mij betreft niks meer aan wijzigen. heel erg bedankt voor de hulp
 

Bijlagen

  • Schermafbeelding 2025-04-14 201636.png
    Schermafbeelding 2025-04-14 201636.png
    535,2 KB · Weergaven: 6
Het is kennelijk zo dat er meerdere puzzels in een doos kunnen zitten. Bij voorbeeld de in de database voorkomende doos 19098. Eén doos, twee puzzels, twee afbeeldingen. Die kan het model van @OctaFish ook niet aan. Je hebt mijns inziens (minimaal) twee tabellen nodig: Doos en Puzzel.
 
Die kan het model van @OctaFish ook niet aan.
Daar ben ik het dan toch niet mee eens; TS heeft in zijn tabel een veld Doosnummer staan. Daarmee leg je dus vast in welke doos een puzzel zit. Daarmee is dat echt wel opgelost. Overigens zou ook ik dan een tabel tDozen toevoegen, zodat je de één-op-veel relatie dan hebt. De tabel tDozen is dan de één-tabel, en de tabel tPuzzels de Veel-tabel.
De originele tabel van TS bevatte daarentegen 3 velden voor Puzzels, en dát is dus een verkeerde opzet. We weten niet of TS geen tabel tDozen heeft in zijn originele opzet, want die hebben wij niet gezien.
 
Ik had/heb geen extra tabel in de database voor het veld nummer, het is misschien wel handig om daar naar te kijken en laat ik weten hoe ik dit oplos. De database is nieuw omdat mijn Vrouw nogal veel puzzelt en ik dit voor haar regel via marktplaats Het ruilen van puzzels is dan een mooie optie want om nu een zolder vol te hebben zit ik niet op te wachten. De kosten van ruilen blijven laag. Doordat het hier steeds vaker gebeurde dat je niet meer weet door de jaren wat je wel of niet hebt gehad (leeftijd denk ik ) deze database is een mooie oplossing en je weet welke je wel of niet hebt gedaan.
 
De oplossing is dan simpel: maak een tabel tDoos aan (of elke naam die je wilt natuurlijk) en gebruik het veld Doosnummer als sleutelveld. Dan kun je elke doos maar één keer toevoegen. Vervolgens koppel je die tabel in het venster <Relaties> aan het veld DoosNummer in de tabel tPuzzels en je zet het vinkje bij <Referentiële Integriteit afdwingen> aan, zodat je geen puzzels kunt toevoegen zonder bijbehorende doos.

Eventueel zet je er wat extra velden bij, zoals Uitgiftejaar (zie voorbeeldje van Peter) en een fotoveld voor de foto van de betreffende doos. Een veld Onderwerp kan ik mij ook nog voorstellen, al zit dat ook al in de ondrhangende tabel tPuzzels.

Gezien je werkwijze kun je overwegen om het vinkje <Gerelateerde records trapsgewijs verwijderen> ook aan te zetten; als je dat doet worden de puzzels uit de tabel Puzzels verwijderd als je een doos uit de tabel tDozen verwijdert. Dat kan handig zijn als je veel ruilt, want dan verdwijnen er veel dozen uit de collectie. En dan heb je ze niet meer in huis, en kunnen ze (in beginsel) ook weg uit de database.

Dat heeft een voordeel (je collectie is altijd up-to-date) maar ook een nadeel: je weet niet meer welke puzzels er in de collectie hebben gezeten. En dan kan je ze dus weer een keer terugruilen. Wat je dus óók kan doen, is een vinkje <Uit_Collectie> toevoegen voor dozen die je ruilt. Dan weet je dat je een bepaalde doos gehad hebt, maar dat die is geruild.
Nóg mooier wordt het als je niet een vinkje gebruikt, maar een veld <Ruildatum>. Op het moment dat je een doos ruilt, vul je daar de datum in. Dan weet je dus niet alleen dat een doos geruild is (datum immers ingevuld), maar óók wanneer dat is geweest. En daar kun je dus weer leuke overzichten van maken :).

Kortom: er is nog genoeg te 'puzzelen' aan de database :).
 
Ik ga er mee bezig komende dagen en het klopt er kunnen nog leuke dingen aan toegevoegd worden. Het is leuk om te doen en ben blij met de hulp en tips dat vult de dagen hier, naast het fietsen wat ook een passie is en waar ik onderweg foto's van maak en ook weer met de ronde die ik doe verwerk op de computer, leuke herinneringen van al die jaren fiets plezier,
 
Ik heb de ontbrekende tabel alvast toegevoegd; kun je er, indien gewenst, al naar kijken.
Een nadeel van een 'topdown' benadering, zoals in tDozen --> tPuzzels, is dat je altijd een doos moet aanmaken voordat je een puzzel kunt invoeren. Vaak koop je een puzzel die in zijn uppie in de doos zit. Dan heb je dus geen Dozen record nodig.
Als die situatie óók voorkomt, dan moet je dus van te voren goed bedenken wat je precies wilt bereiken. Je kunt dat overigens wel ondervangen in de tabellenstructuur, of op het formulier, maar je moet het dus wél van tevoren weten, en dienovereenkomstig de structuur te bouwen.

Ik zou overigens in de tabel tPuzzels ook een veld [Tekenaar] opnemen; een aantal puzzels heeft een andere tekenaar, en ook daar kun je leuke overzichten op maken :).
 
Laatst bewerkt:
Misschien nog een puntje om rekening mee te houden: ik weet niet of de puzzels die met twee in een doos zitten ook los verkrijgbaar zijn. In dat geval zou je een derde tabel nodig hebben. Naast Doos en Puzzel ook een koppeltabel tussen die twee.

Anderzijds: als het er alleen om gaat te weten of een puzzel al eens gemaakt is, heb je het dozenverhaal misschien helemaal niet nodig. Acces is dan een beetje overkill. Een lijstje (met namen van de puzzels) in Excel volstaat dan.
 
Terug
Bovenaan Onderaan