Keuzemenu op basis van eerdere keuze

Status
Niet open voor verdere reacties.

janjorritsma

Gebruiker
Lid geworden
3 nov 2008
Berichten
22
Beste allemaal,

Ik heb wat gezocht, maar ik kan niet direct het antwoord op mijn vraag vinden.
Vandaag ben ik begonnen om te onderzoeken of ik met Acces een goed formulier kan maken.

De bedoeling is dat als ik Kol1 kies voor A, dat in Kol2 alleen de A waarden (A-1 en A-2) te zien zijn.
Hetzelfde geldt natuurlijk voor de B, C en D.

Maar hoe kan ik dat het simpelst regelen?

Voor de duidelijkheid heb ik het bestand bijgevoegd.

Alvast bedankt voor jullie reactie.

Met vriendelijke groet,
Jan
 

Bijlagen

  • Acces_voorbeeld.zip
    21,9 KB · Weergaven: 5
Je maakt het jezelf bepaald niet makkelijk op deze manier. Leg eens uit wat nu eigenlijk de échte bedoeling is, want dit lijkt mij eerder een probeersel dan een serieus formulier.
 
Vandaag ben ik begonnen om te onderzoeken of ik met Acces een goed formulier kan maken.
Normaal gesproken zou ik zeggen: dat weet je toch al van jezelf? Ik weet nog steeds niet of ik open hart operaties kan uitvoeren. Maar ik kan geen vrijwilliger vinden die mij die kans geeft. Dus dat moet ik nog onderzoeken :D.

Wat je vraag betreft: ik heb een oplossinkje bedacht, maar dat kan (sowieso niet, denk ik) zonder te programmeren. En omdat je het jezelf een beetje lastig maakt zo, is ook die code niet echt simpel.
 
Je voorbeeld is inderdaad niet echt realistisch. Normaalgesproken selecteer je de waardes uit twee gerelateerde tabellen. Bijvoorbeeld met de eerste keuzelijst kies je een artikelgroep uit een tabel en in de volgende een artikel uit de artikelentabel dat behoort tot de gekozen artikelgroep.

Er is in dat geval overigens veel te vinden op internet als je zoekt op cascading combo boxes access. Het is in ieder geval goed te doen in Access.
 
Normaalgesproken selecteer je de waardes uit twee gerelateerde tabellen.
Nee joh. Misschien bij jou thuis, maar toch niet bij mij. Kan echt gewoon in één tabel. Leg ik allemaal uit in de cursus Access :).
 
Normaal gesproken zou ik zeggen: dat weet je toch al van jezelf? Ik weet nog steeds niet of ik open hart operaties kan uitvoeren. Maar ik kan geen vrijwilliger vinden die mij die kans geeft. Dus dat moet ik nog onderzoeken :D.

Wat je vraag betreft: ik heb een oplossinkje bedacht, maar dat kan (sowieso niet, denk ik) zonder te programmeren. En omdat je het jezelf een beetje lastig maakt zo, is ook die code niet echt simpel.
Het formulier wordt een invoerformulier voor collega's. Deze collega's werken op verschillende locaties en ik wil dat als zij een locatie kiezen, dat zij alleen een afdeling kunnen kiezen, die onder hun locatie vallen.

Ik weet op zich wel dat je een formulier kan maken in Acces, maar ik twijfel of dit de beste keuze is. Op internet wordt ik lichtelijk overspoelt met allerlei opties en programmeertalen. Mijn keuze is nu wel gevallen op Acces.

VBA code is geen probleem. Ik snap niet alles daarvan, maar heb in het verleden wel vaker VBA codes gebruikt. In grote lijnen snap ik wat er dan staat.

In je laatste post noem je een cursus Acces. Kan je daar meer informatie over geven? Als ik het Forum zo bekijk, dan weet jij wel het één en ander ;).
 
ik wil dat als zij een locatie kiezen, dat zij alleen een afdeling kunnen kiezen, die onder hun locatie vallen.
Ik volg het niet helemaal. Als ik het zo lees, dan heb je maar één keuzelijst nodig. Gebruikers hoeven alleen een afdeling te kiezen. Welke afdelingen getoond worden is afhankelijk van de locatie waar de gebruiker werkt.

Je moet in een tabel vastleggen welke gebruikers er zijn en op welke locatie ze werken. Leg ook hun (Windows) userid vast zodat je kan vaststellen welke gebruiker achter de knoppen zit en welke afdelingen hij mag kiezen.
Als de gebruiker het formulier opent kan je op basis van de userid (Environ("USERNAME")) in de gebruikerstabel de locatie opzoeken en de keuzelijst inperken.
 
Ik snap je gelukkig wel, en ook de denkwijze. Al is de vraag waarom je het op deze manier zou willen oplossen. Voorbeeldje: een instelling met twee filialen en in totaal 7 afdelingen heeft nauwelijks behoefte aan een dubbele keuzelijst waarin je eerst het filiaal filtert, en daarna de afdeling. Als je de keuzelijst met afdelingen opent, zie je immers gelijk al alle opties. Dus je maakt het de mensen dan moeilijker, niet makkelijker.
Anders is het als je 20 locaties hebt, en per locatie 30 afdelingen. Dan praat je over zo'n 600 afdelingen, en dan is het wél handig om de lijst te splitsen.

Daarnaast snap ik niet helemaal wat je van plan bent. Ik proef nog weinig doordachts, zo denk ik niet dat er een Functioneel Ontwerp is gemaakt? Je begint gelijk met de zin "Het formulier wordt een invoerformulier voor collega's". Dat is mij véél te vaag: om te beginnen is de belangrijkste vraag natuurlijjk: Wát gaat er ingevoerd worden? Waar is de database überhaupt voor? Je twijfelt zelf al of Accerss de beste keuze is, en ook dat is een teken dat e.e.a. bepaald niet goed doordacht is. Je begint namelijk eerst met vaststellen wat de informatiebehoefte is, voordat je ook maar begint om aan een oplossing daarvan te werken. Laat staan dat je bij het begin al weet wat het beste programma is om die behoefte te verwezenlijken. Kan best zijn dat je na grondig onderzoek en denkwerk uitkomt op Access, maar dat is dan het resultaat van het proces. Niet het uitgangspunt.

Als je de informatiebehoefte hebt geïnventariseerd en uitgewerkt in een FO, kun je aan je tabellen beginnen te werken. En je queries. En dán pas je formulieren. Dan weet je dus precies wat je nodig hebt. De oplossing van Peter vind ik dan ook veel te kort door de bocht, al gebruik ik 'm zelf ook in bepaalde situaties wel. Want an sich werkt het prima om keuzelijsten te beperken op basis van gebruikers gegevens. Zelf gebruik ik liever een inlogscherm waar een gebruiker kan inloggen, met als standaard de gebruiker van de ingelogde account, maar je moet wel de optie overlaten om een andere gebruiker te kunnen kiezen lijkt mij. Maar ook dat is dus al een stap verder.

De cursus Access staat in de Handleidingen sectie. De knop daarvoor staat in de blauwe titelbalk.

Wat ik als oplossing gebruik voor een afhankelijke keuzelijst, is overigens een tabel die is gebaseerd op het stamboomprincipe. Daarbij leg je in de tabel alle objecten vast die je wilt kunnen kiezen. Die tabel bevat een sleutelveld, omschrijving en een ParentID (minimale inrichting :)). Elke optie krijgt een sleutelveld (kan AutoNummer zijn). Te beginnen dus met de filialen, waarvoor het voldoende is om het ID aan te maken. Voor Afdelingen (als dat het volgende niveau is) maak je dus aparte records aan, weer met een eigen ID, eigen omschrijving maar nu vul je ook het ParentID veld in. Stel dat Locatie C gebruikt wordt dat ID 3 heeft, dan vul je dus in het ParentID de waarde 3 in. En zo vul je de hele tabel (@peter: één tabel dus ;)).
Voordeel van deze constructie: je kunt net zoveel lagen toewijzen als je wilt. Stel dat je de afdelingen wilt opsplitsen in kamers. Geen probleem: je voegt gewoon een nieuw record toe, weer met ID en omschrijving, en nu vul je in ParentID de waarde in van de betreffende afdeling.

Hoe meer trappen, hoe meer keuzelijsten je op het formulier nodig hebt om te kiezen. Daarbij zet de eerste keuzelijst (de locaties) de waarden in de tweede, de tweede zet de waarden in de derde en zo verder.

Maar ik ben eigenlijk wel benieuwd naar wat je nu eigenlijk aan het maken bent :).
 
Als je nog twijfels hebt of Access de juiste keuze is, heb je al gedacht om een web applicatie te maken zonder code? Dan hoef je de app maar één keer op de website te installeren.

Om deze inhoud te bekijken, hebben we jouw toestemming nodig om cookies van derden te gebruiken.
Voor meer gedetailleerde informatie, zie onze cookiespagina.

Gebruikte (gratis) database

https://www.postgresql.org/download/
https://www.postgresqltutorial.com/
 
Ik snap je gelukkig wel, en ook de denkwijze. Al is de vraag waarom je het op deze manier zou willen oplossen. Voorbeeldje: een instelling met twee filialen en in totaal 7 afdelingen heeft nauwelijks behoefte aan een dubbele keuzelijst waarin je eerst het filiaal filtert, en daarna de afdeling. Als je de keuzelijst met afdelingen opent, zie je immers gelijk al alle opties. Dus je maakt het de mensen dan moeilijker, niet makkelijker.
Anders is het als je 20 locaties hebt, en per locatie 30 afdelingen. Dan praat je over zo'n 600 afdelingen, en dan is het wél handig om de lijst te splitsen.

Daarnaast snap ik niet helemaal wat je van plan bent. Ik proef nog weinig doordachts, zo denk ik niet dat er een Functioneel Ontwerp is gemaakt? Je begint gelijk met de zin "Het formulier wordt een invoerformulier voor collega's". Dat is mij véél te vaag: om te beginnen is de belangrijkste vraag natuurlijjk: Wát gaat er ingevoerd worden? Waar is de database überhaupt voor? Je twijfelt zelf al of Accerss de beste keuze is, en ook dat is een teken dat e.e.a. bepaald niet goed doordacht is. Je begint namelijk eerst met vaststellen wat de informatiebehoefte is, voordat je ook maar begint om aan een oplossing daarvan te werken. Laat staan dat je bij het begin al weet wat het beste programma is om die behoefte te verwezenlijken. Kan best zijn dat je na grondig onderzoek en denkwerk uitkomt op Access, maar dat is dan het resultaat van het proces. Niet het uitgangspunt.

Als je de informatiebehoefte hebt geïnventariseerd en uitgewerkt in een FO, kun je aan je tabellen beginnen te werken. En je queries. En dán pas je formulieren. Dan weet je dus precies wat je nodig hebt. De oplossing van Peter vind ik dan ook veel te kort door de bocht, al gebruik ik 'm zelf ook in bepaalde situaties wel. Want an sich werkt het prima om keuzelijsten te beperken op basis van gebruikers gegevens. Zelf gebruik ik liever een inlogscherm waar een gebruiker kan inloggen, met als standaard de gebruiker van de ingelogde account, maar je moet wel de optie overlaten om een andere gebruiker te kunnen kiezen lijkt mij. Maar ook dat is dus al een stap verder.

De cursus Access staat in de Handleidingen sectie. De knop daarvoor staat in de blauwe titelbalk.

Wat ik als oplossing gebruik voor een afhankelijke keuzelijst, is overigens een tabel die is gebaseerd op het stamboomprincipe. Daarbij leg je in de tabel alle objecten vast die je wilt kunnen kiezen. Die tabel bevat een sleutelveld, omschrijving en een ParentID (minimale inrichting :)). Elke optie krijgt een sleutelveld (kan AutoNummer zijn). Te beginnen dus met de filialen, waarvoor het voldoende is om het ID aan te maken. Voor Afdelingen (als dat het volgende niveau is) maak je dus aparte records aan, weer met een eigen ID, eigen omschrijving maar nu vul je ook het ParentID veld in. Stel dat Locatie C gebruikt wordt dat ID 3 heeft, dan vul je dus in het ParentID de waarde 3 in. En zo vul je de hele tabel (@peter: één tabel dus ;)).
Voordeel van deze constructie: je kunt net zoveel lagen toewijzen als je wilt. Stel dat je de afdelingen wilt opsplitsen in kamers. Geen probleem: je voegt gewoon een nieuw record toe, weer met ID en omschrijving, en nu vul je in ParentID de waarde in van de betreffende afdeling.

Hoe meer trappen, hoe meer keuzelijsten je op het formulier nodig hebt om te kiezen. Daarbij zet de eerste keuzelijst (de locaties) de waarden in de tweede, de tweede zet de waarden in de derde en zo verder.

Maar ik ben eigenlijk wel benieuwd naar wat je nu eigenlijk aan het maken bent :).

Je hebt gelijkt wat betreft het bedenken van de juiste volgorde. Ik ga even een stap terug en eerst goed vastleggen wat de bedoeling is. Bedankt in ieder geval voor het vermelden wat de beste stappen zijn.

Ik heb de handleidingen bekeken en ik ga mij daar eerst maar op vastbijten. Daar ben ik de komende tijd wel even zoet mee, maar zeker een meerwaarde. Daarna ga ik verder met het formulier. Het is ook niet iets wat gelijk klaar moet.

Bedankt voor de feedback en tips.
 
Als je nog twijfels hebt of Access de juiste keuze is, heb je al gedacht om een web applicatie te maken zonder code? Dan hoef je de app maar één keer op de website te installeren.

Om deze inhoud te bekijken, hebben we jouw toestemming nodig om cookies van derden te gebruiken.
Voor meer gedetailleerde informatie, zie onze cookiespagina.

Gebruikte (gratis) database

https://www.postgresql.org/download/
https://www.postgresqltutorial.com/
Bedankt voor je reactie. Ik neem het mee!
 
@TS: leg even uit wat het nut is van het citeren van mijn complete (best lange) bericht. Volkomen zinloos, dat citaat. Wil je dat nooit meer doen? Er zijn prima mogelijkheden om gelijk te antwoorden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan