Vervolg-keuze dropdown menu maken in Access

Status
Niet open voor verdere reacties.

miicker

Gebruiker
Lid geworden
1 jul 2010
Berichten
87
Hallo,

Ik ben bezig met een het opzetten van een DB binnen Access.
Ik heb een aantal tabellen, zo heb ik de tabel apparatuur.
In de tabel apparatuur dient het mogelijk te zijn om een soort te kiezen d.m.v. een dropdown lijst (notebook, desktop, server etc.)
In de tabel apparatuur dient het ook mogelijk te zijn om vervolgens een merk te kiezen.
Nu hebben bijvoorbeeld routers bijvoorbeeld het merk Cisco, en desktops hebben bijvoorbeeld het merk HP of Dell.

Nu wil ik het zo hebben dat als ik in de tabel apparatuur gegevens ga invoeren, het zo is dat wanneer men kiest voor het soort ''Router'' dat er alleen nog de keuze is uit het merk Cisco, of eventueel andere merken, wanneer men kiest voor ''Desktop'' dienen bijvoorbeeld alleen de merken HP of Dell beschikbaar te zijn.

Ik heb een aantal afbeeldingen van hoe de relaties e.d. nu in elkaar zitten. Ook heb ik de DB zelf als bijlage toegevoegd.

Relaties:
Relaties.png

Dropdown menu Soort (wordt nu gehaald uit de tabel ''Soort-Merk'' (gegevens mogen hier niet langer dubbel in staan)
Dropdown - Soort.png

Dropdown menu Merk (wordt nu gehaald uit de tabel ''Soort-Merk'' (gegevens mogen hier niet langer dubbel in staan)
Dropdown - Merk.png

Tabel Soort:
Tabel - Soort.png

Tabel Merk:
Tabel - Merk.png

Tabel Soort-Merk: (deze gegevens worden uit de tabellen Soort en Merk gehaald, deze tabel heb ik alleen om aan te geven dat bijv. Desktops alleen de merken Asus en HP kan hebben)
Tabel - Soort-Merk.png

Zou iemand me willen helpen en me vertellen hoe ik hiervoor kan zorgen.

Mocht dit niet lukken om op deze manier gegevens in tabellen in te voeren, kan dit dan wel in een invoerformulier, zodat gegevens makkelijk kunnen worden ingevoerd?

DB: Bekijk bijlage DB.zip

Alvast bedankt!
 
Er zijn wat mij betreft een aantal zaken die je moet veranderen:
1. gooi je huidige relaties weg, want daar heb je niks aan.
2. De tabel Soort_Merk is ook overbodig, dus die kan ook weg.
3. Volgende wat weg kan: alle keuzelijsten die je nu in de tabel hebt gemaakt. Keuzelijsten (op basis van tabellen) horen niet thuis in een tabel, maar op een formulier.
4. Appnaam als sleutelveld? Slecht idee, een naam van een apparaat zou ik nooit als sleutel gebruiken; maak een extra numeriek (of tekstveld) veld met daarin een code, bijvoorbeeld PR001 voor een printer, en LT001 voor een Laptop. Je hebt dan veel beter inzicht in de aantallen om maar eens wat te noemen. Hetzelfde geldt voor Merken; gebruik een MerkID en een omschrijvingsveld. En relateer je tabellen op basis van dit ID veld. Merknamen willen nog wel eens veranderen, en dat mag natuurlijk geen invloed hebben op de werking van je db. Het record RIM met MerkID 21 moet je probleemloos kunnen hernoemen naar Blackberry. In een tekstveld kan dat, want de sleutel verandert niet.
5. Belangrijkste punt: je wilt graag met keuzelijsten werken, die afhankelijk zijn van elkaar. Dat kan prima, mits je formulieren gebruikt.
 
Oke duidelijk, maar hoe dienen volgens jou de relaties in elkaar te zitten?
 
Als je tabellen wat duidelijker zouden zijn, is die vraag makkelijker te beantwoorden. De tabel [Merk] op zich is duidelijk, maar waarom is die gekoppeld aan [Soort]? Een Laptop is geen 'soort' van HP; HP is slechts de maker. HP maakt o.a. laptops en printers, maar die worden gemaakt en verkocht middels een range producten (of modellen. Het apparaat 'HP ENVY TouchSmart 4-1202ed Ultrabook' is van het soort Laptop, en het apparaat 'HP Officejet 150 mobiele All-in-One printer (CN550A)' is van het soort Printer. Soort is dus een eigenschap van een apparaat, en niet van een merk. Gek genoeg mis ik in je tabel [Apparatuur] een koppeling met Merk, terwijl die dus vrij essentieel is. Wèl heb je de velden [Soort] en [Type], die dus in mijn ogen dubbelop zijn.
 
Hoi, ik zal ook even reageren. Micker en ik proberen namelijk samen deze database te bouwen.

Maar om nog even terug te komen hierop. Wat wij dus willen is;

Wanneer men in tabel Apparatuur een Apparaatnaam typt (wat overigens een uniek nummer is zoals jij zei LT001/WS001/ETC), kan men een soort kiezen (bijvoorbeeld; laptop, desktop, switch, etc). Als men bijvoorbeeld kiest voor "laptop" dan zou in het volgende selectievak alleen, bijvoorbeeld; HP, Asus of Dell moeten staan, stel iemand kiest voor "switch" dan zou er bijvoorbeeld alleen Cisco moeten staan.

Als we even niets aantrekken van de relaties zoals wij ze nu hebben, zou dit mogelijk zijn? Het liefst zonder Query gebruik.

Mvg
 
Een apparaat is van een bepaald soort, en een apparaat is van een specifiek merk. Met een simpele keuzelijst laat je de soorten laat zien, en in een volgende keuzelijst filter je dan in een query de merken op basis van de soort.
Waarom je geen query wilt gebruiken is mij niet duidelijk, want als je dat niet wilt, zul je (eigenlijk een beetje wat jullie hadden) aparte tabellen moeten maken waarin je alle combinaties vastlegt. En believe me, dat is behoorlijk veel meer werk dan de gegevens middels een query genereren :)
 
Oke, dus als ik het goed begrijp. Stel wij zouden geen gebruik gaan maken van querys dan zouden we toch van iedere soort/merk combinatie aparte tabellen moeten aanmaken.

Stel we gebruiken een query dan zouden we voor zowel merk en soort maar een tabel hoeven te maken. Klinkt opzicht wel een stuk logischer, dat word dan puzzelen met querys lijkt me zo.
 
Niet echt; denk ook eens na over je procedures want die zijn volgens mij ook maar zozo. Het is bijvoorbeeld met een goed opgezette db heel simpel om op basis van een formulier Merk apparaten toe te voegen middels een subformulier. Het MerkID is dan het overeenkomende veld. In het subformulier kies je dan een Soort (Laptop, Printer etc). Omgekeerd zou ook moeten kunnen, dat je op basis van Soort werkt, maar dat is toch een heel stuk minder logisch.
Bovendien: als je twee keuzelijsten wilt die afhankelijk zijn (Merk en Soort), dan heb je zowiezo een probleem als je met een lege database begint. De keuzelijst Merk zal nog wel alle merken laten zien, maar omdat je dan nog geen records hebt gemaakt, is er geen waarde die je kunt laten zien in Soort. Die is namelijk afhankelijk van eerder ingevoerde records. Dus erg handig is dat allemaal niet. Bovendien wil je ook nieuwe combinaties kunnen maken, en dat kan ook al niet als je de lijst Soort afhankelijk maakt van Merk. En als laatste argument: om hoeveel merken en soorten gaat het nu helemaal.... Een keuzelijst kan zo'n 1600 items aan, en dat moet meer dan genoeg zijn! En als je een keuzelijst hebt, kun je items opzoeken door de eerste letter(s) te typen. Je vindt dus in no time at all het gewenste soort, of merk. Er is in mijn optiek dus geen enkele noodzaak om de twee te koppelen.
 
Nouja, we vinden het netter uitzien. We willen bijvoorbeeld als men desktop kiest dat er dan alleen merken in beeld komen die desktoppen produceren. Dus er mag bijvoorbeeld geen Cisco bij zitten. Maar kijken we dan bij switches, dan mag er wel Cisco tussen zitten, maar bijvoorbeeld geen Asus of Dell.

De merken die erin gaan zitten zijn beperkt en bij ons bekend.

We zijn nu toch aan het overwegen om deze database met behulp van querys te maken. Heb jij misschien nog een aan handige tips voor het maken van deze querys? In de zin van hoe maak je ze? Wij dachten zelf dat we aan twee querys genoeg zouden hebben. Daar stoeien we nu al een aantal dagen mee maar het lukt niet echt.

Bedankt!
 
Ofwel dicht je superkrachten toe aan queries, ofwel snap je niet wat een query is. Ofwel ik snap je vraag niet...
 
We hebben basiskennis wat betreft querys. Maar ik zelf weet niet zo goed hoe ik het beste kan beginnen om een query te maken hiervoor.
 
Gewoon proberen is doorgaans een goede stap ;)
Je zult dus eerst alle gewenste combinaties in moeten kloppen in de koppeltabel. In een query koppel je dan die tabel aan de brontabellen, en zet je alle noodzakelijke velden in de query, waaronder ook de sleutelvelden. Die heb je nodig om het criterium te maken op de keuzelijst.
 
Zo heb ik het tot nu toe ook gedaan. Alleen wat ik nu probeer is dus een Query aan te maken voor de tabel SootMerk (koppeltabel dus) en vervolgens via "wizard opzoek" een relatie leggen met deze Query in de tabel apparatuur. Is dat ook een manier om het te krijgen?
 
Ik lees het woord 'wizard'. Een wizard is bij Microsof iemand die niets kan, en de hele dag niks anders doet dan voor de collega's koffie halen. En dus een terechte omschrijving van de knop in Access :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan