afhankelijke Keuzelijsten & tabellen

Status
Niet open voor verdere reacties.

DH2512

Gebruiker
Lid geworden
17 feb 2012
Berichten
20
Met mijn onervarenheid heb ik een formulier in Access gemaakt waarbij ik het formulier gebruitk als invulformulier om zo record in een tabel te zetten.
Bij het invullen van het formulier heb ik twee keuzelijsten met invoervak gemaakt. Maar de twee keuzelijsten moeten we aan elkaar afhankelijk zijn.
Als men in keuzelijst I een van de 8 waarden heeft gekozen dan wil ik graag in keuzelijst II dat er waardes worden getoond ie gerelateerd zijn met de keuze uit keuzelijst I.

Aan keuzelijst I heb ike en tabel gekoppeld (via rijbron, etc.). En dat werkt goed want als je op keuzelijst I klikt dan kun je een keuze maken uit de waardes die in een tabel zijn ingevuld.

Verder heb ik nog voor keuzelijst II nog 8 losse tabellen gemaakt. Maar hoe kan ik dit aan elkaar koppelen en afhankelijk maken?

Of is de basis niet goed en moet het anders aan elkaar worden gekoppeld?

Alvast dank voor jullie hulp,

DH
 
Verder heb ik nog voor keuzelijst II nog 8 losse tabellen gemaakt. Maar hoe kan ik dit aan elkaar koppelen en afhankelijk maken?
Dit riekt als een hopeloze oplossing; ik kan mij geen enkele situatie voorstellen waarbij je voor één keuzelijstlijst 8 tabellen nodig hebt. En al helemaal niet als die keuzelijst ook nog afhankelijk moet zijn van een andere keuzelijst. Maak een voorbeeldje van je db met testdata, want ik vermoed dat we anders veel te veel tijd kwijt gaan zijn aan vaststellen wat je eigenlijk nodig hebt...
 
naamloos.JPG

Hoi Michel

Bedankt voor je eerste reactie :confused:

Maar in de bijlage heb ik de 8 tabellen schematische proberen weer te geven! Als het goed is heb ik een bestand geupload .
 
Ik zie nog geen bestand, alleen een plaatje. Maar dat geeft op zich al wel aan dat je op de verkeerde manier bezig bent, zoals ik al vermoedde :)
Er zijn een paar opties:
1. Maak voor elke subniveau een aparte tabel aan met een verwijzing naar de hoofdtabel
2. Maak één tabel aan met alle categorieën, en verwijs middel een ParentID naar een bovenliggend niveau.

Van de laatste optie heb ik in dit draadje een voorbeeldje gezet (post van 5 januari).
Het voordeel van de tweede methode is dat je oneindig door kunt borduren met niveau's. De techniek is dus bijvoorbeeld prima geschikt als je familieverbanden wilt vastleggen, waarbij je de kinderen van de eerste personen kunt koppelen aan de ouders door een verwijzing op te nemen naar het ID van de ouders, en later de kinderen daarvan weer kunt koppelen aan de ouders, etc. Op die manier kun je dus onbeperkt doorkoppelen.
De eerste methode is star, in die zien dat je voor elk subniveau een aparte tabel nodig hebt. Het inrichten ervan is wel wat makkelijker.

Om op jouw probleem terug te komen: maak dus één tabel aan voor de hoofdniveau's, en één tabel voor de subniveau's. Koppel de twee met een één-op-veel relatie aan elkaar op basis van Cat1_ID.
 
Bedankt! Maar als ik het begrijp moet ik twee tabellen maken?
Hoe kan ik overigens het access bestand met de tabellen uploaden?
 
Je voorbeeldje was inderdaad onbruikbaar, al was het maar omdat je Memo velden voor de teksten gebruikt, en dat kan niet in een keuzelijst. Ook heb je geen afhankelijke tabellen die je aan elkaar kunt koppelen. Ik heb er maar even een werkend voorbeeld van gemaakt. Ik zou zeggen: bekijk het eens!
 

Bijlagen

  • classificatie 2b21.zip
    15,8 KB · Weergaven: 79
Ook je laatste voorbeeldje (dat al veel beter is oveigens) met een formulier:
 

Bijlagen

  • classificatie in een tabel 2b21.zip
    18,9 KB · Weergaven: 43
Hoi Michel

Het lukt niet helemaal alhoewel ik het nu een beetje meer begrijpt.

Ik heb je formule uit het formulier gekopieerd en in mijn formulier gezet maar ik krijg alleen cijfers in het eerste keuzelijst te zien. En tweede keuzelijst reageert niet...... :(
 
In je Rijbron staat 'AS Cassificatie' waar verwijs dit naar? En staat er bewust geen 'L' in Cassificatie?
 
Die L staat er niet, omdat mijn toetsenbord geen L heeft :D
Verder heb ik, omdat je in je voorbeeld nog een memoveld gebruikt voor de omschrijvingen, een truc moeten uithalen om hem wel in de keuzelijst te laten zien. Met Format wordt het Memoveld geconverteerd naar een tekstveld, wat wel gebruikt kan worden. Beter is het natuurlijk om geen memoveld te gebruiken. Zowiezo is een memoveld erg onhandig in een keuzelijst als je bijvoorbeeld 20000 tekens hebt gebruikt; dat maakt de regel er niet leesbaarder op :) Bovendien kun je ook niet sorteren op een memoveld, en wel op een tekstveld.
Als je de rijbron van de keuzelijst bekijkt, kun je met de knop met de 3 puntjes het Query-ontwerp venster openen. Dat kijkt een stuk makkelijker, en het aanpassen van de query gaat ook beter.
 
;-) Ik had al naar aanleiding van je vorige opmerking mijn veld al in tekstveld gezet ;) Vandaar de problemen!
 
Helaas hij doet het nog steeds niet. :(

Ik heb voor de eerste keuzelijst de volgende formuler gebruikt:

SELECT [CMR classificatie hoofd en sub].Id, AS Classificatie, [CMR classificatie hoofd en sub].ParentID FROM [CMR classificatie hoofd en sub] WHERE (([CMR classificatie hoofd en sub].ParentID) Is Null Or ([CMR classificatie hoofd en sub].ParentID)=0));

Maar dan zegt Access dat er een spelfout in zit.
 
Het is helaas niet gelukt. Ik heb in de bijlage de tabel en het formulier toegevoegd.

Ik heb de volgende formule gebruikt voor keuzelijst I (hoofd classficatie):

SELECT [CMR classificatie hoofd en sub].Id, [CMR classificatie hoofd en sub].ParentID FROM [CMR classificatie hoofd en sub] WHERE ([CMR classificatie hoofd en sub].ParentID) Is Null Or ([CMR classificatie hoofd en sub].ParentID)=0;

En voor keuzelijst II (sub classificatie):

SELECT [CMR classificatie hoofd en sub].Id, [CMR classificatie hoofd en sub].ParentID FROM [CMR classificatie hoofd en sub] WHERE (([CMR classificatie hoofd en sub].ParentID)=Forms!fCategory! CMR hoofdfout I ACT);

Ik begrijp de foutmelding niet. :confused:

Bekijk bijlage tabel plus formulier 2b21.zip
 
Keuzelijst I is bijna gelukt. Ik heb de formule aangepast naar

SELECT [CMR classificatie hoofd en sub].Id, [Classificaties],1 AS Cassificatie, [CMR classificatie hoofd en sub].ParentID FROM [CMR classificatie hoofd en sub] WHERE ((([CMR classificatie hoofd en sub].ParentID)=Forms!fCategory!(CMR hoofdfout I ACT))) ORDER BY [Classificaties],1;

Maar ik krijg nu wel een keuzelijst te zien maar ik zie in het eerste kolom een cijfer (ID) en in de tweede kolom de tekst. Hoe kan ik ervoor zorgen dat ik meteen tekst zie en ook tekst behoud als ik een keuze heb gemaakt?

Met keuzelijst II is het nog niet gelukt :(
 
Ik zit je laatste voorbeeldje net te bekijken, maar ik word overvallen door foutmeldingen, en een gigantische berg keuzelijsten?? Waar is bijvoorbeeld de tabel [ZK meldingen eind oordeel 1] gebleven? En heb je mijn tweede voorbeeld al bekeken? Je gebruikt in je eigen voorbeeld dezelfde brontabel, dus als je de keuzelijsten baseert op die uit mijn voorbeeld, dan zou het moeten lukken... Kijk ook naar de Opmaak eigenschappen van de keuzelijsten; je zult zien dat de kolombreedtes bepalen wat je te zien krijgt in je keuzelijst ;)
 
oeps.... ik ben vanuit jouw tweede voorbeeld bekeken en geprobeerd dat in mijn access te zetten....
 
Maar je gebruikt een tabel die ik niet zie, en koppelt de keuzelijsten ook aan velden die er niet zijn. Dat geeft uiteraard allerlei foutmeldingen... Bovendien verwijs je in je keuzelijsten naar een formuliernaam die niet bestaat, en dat levert ook weer foutmeldingen op. En waarom zoveel keuzelijsten? Je hebt er toch maar twee nodig? Ik zie althans geen verdere subcategorieën in de tabel.

Als ik mijn voorbeeld in jouw db importeer, doet-ie het overigens prima!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan