Hierbij een voorbeeldje van hoe het mijns inziens zou moeten, waarbij ik zo eigenwijs ben geweest (want dat ben ik nou eenmaal

) om bij het begin te beginnen, namelijk de tabel met de gegevens van de leerlingen. In jouw database is dat 'TBL_adres' maar ik vind 'Leerlingen' een logischer naam omdat er meer dan alleen adresgegevens in staan.
De reden dat ik hiermee begin, is dat jij voor mijn gevoel de basisprincipes van Access nog niet helemaal door hebt. En dat zal toch echt eerst moeten voordat we naar meer complexere dingen gaan kijken zoals jouw vragen in je laatste bericht.
In mijn tabel 'Leerlingen' zijn een aantal dingen gewijzigd t.o.v. jouw tabel 'TBL_adres':
- Het veld 'LLNR' heb ik naar voren gehaald (hier kom ik later op terug).
- De velden 'POSTC' en 'GEMEENTE' heb ik verwijderd en ondergebracht in een nieuwe tabel 'Gemeenten'. Daarvoor in de plaats heb ik het nieuwe veld 'GemID' aangemaakt (in de tabel 'Leerlingen') en deze heb ik in het scherm 'Relaties' gekoppeld met het veld 'GemID' van de tabel 'Gemeenten'.
De reden hiervoor is dat je bij voorkeur elk gegeven maar 1 keer opslaat in een database. In jouw tabel komen diverse gemeenten en postcodes meerdere malen voor en dat is niet handig.
Het veld 'Gemeente' en het veld 'Postcode' heb ik
beide sleutelveld gemaakt zodat je nooit dezelfde combinatie van gemeentenaam en postcode kunt invoeren. Ook een eigenschap van een goede database: geen dubbele gegevens!
Overigens raad ik je aan om hetzelfde te doen in de tabel 'Leerlingen' door bijvoorbeeld de combinatie Naam, Voornaam en Geboortedatum tot sleutel te benoemen zodat je niet dezelfde leerling dubbel kunt invoeren. (Hoe groot is de kans tenslotte dat 2 leerlingen dezelfde naam hebben
én dezelfde geboortedatum?). Dat kan ik nu niet doen omdat veel velden leeg zijn en dat mag niet bij sleutelvelden.
- De velden TEL1, TEL2 en TEL3 heb ik gewijzigd in respectievelijk TelDanser, TelMama en TelPapa omdat je ze zo noemt op je formulieren 'FRM_invoerenLeden' en 'FRM_aanpassen_adrestabel'. Wel zo handig om namen zoveel mogelijk gelijk te houden en bovendien zijn TEL1, TEL2 en TEL3 te vaag.
- Het veld 'Aanpassing_gegevens' vond ik een te lange naam dus daar heb ik 'LaatsteAanp' van gemaakt.
Vervolgens heb ik eerst de query 'GemeentenQry' gemaakt op basis van de tabel 'Gemeenten', waarbij achtereenvolgens de velden 'Gemeente' en 'Postcode' oplopend gesorteerd worden.
Op basis van deze query heb ik toen met de 'Wizard Formulier' het formulier 'Gemeenten' gemaakt, waarbij ik de standaard weergave op 'Gegevensblad' heb gezet.
In dit formulier kun je eenvoudig nieuwe gemeentes en postcodes toevoegen door naar onderen te scrollen of door op het navigatieknopje voor 'nieuw record' te klikken onderaan in het scherm. (De navigatieknopjes worden standaard weergegeven in formulieren tenzij je ze uitzet in de eigenschappen).
Ook kun je bestaande gemeentes en postcodes wijzigen, mochten daar fouten in zitten.
En zoals je ziet, heb je geen 'moeilijk' gedoe nodig met onafhankelijke velden, toevoegqueries en macro's
Daarna heb ik de 'LeerlingenQry' gemaakt, waarin ik
alle velden uit de tabel 'Leerlingen' heb opgenomen
plus het veld 'Postcode' uit de tabel 'Gemeenten'. De velden 'GemID' en 'Gemeente' van de tabel 'Gemeenten' heb ik dus
niet opgenomen en de reden daarvoor zie je later.
Deze query laat ik oplopend sorteren op het veld LLNR.
Vervolgens heb ik op basis van deze query, en wederom m.b.v. de 'Wizard Formulier', het formulier 'Leerlingen' gemaakt waarbij ik de standaard weergave op 'Kolommen' heb gezet (of iets dergelijks; in mijn Engelstalige Access heet het 'Columnar').
Als een formulier gebaseerd is op een query waarin velden uit meer dan 1 tabel zijn opgenomen, vraagt Access ook op basis van welke tabel je gegevens weergegeven moeten worden; in dit geval 'Leerlingen' of 'Gemeenten'. Uiteraard is dat in dit geval 'Leerlingen'.
In het formulier 'Leerlingen' heb ik allereerst het veld 'GemID' gewijzigd in een 'Keuzelijst met Invoervak'. Dat doe je door in de Ontwerpweergave het veld met de rechtermuisknop aan te klikken en vervolgens ga je naar 'Wijzig in' en dan 'Keuzelijst met Invoervak'.
Daarna heb ik bij de eigenschap 'Rijbron' van dit veld de tabel 'Gemeenten' geselecteerd. Vervolgens heb ik op de drie puntjes (...) geklikt achteraan deze eigenschap en een query gemaakt. Kijk zelf maar hoe deze eruit ziet.
Daarna heb ik de eigenschap 'Beperken tot lijst' op 'Ja' gezet en (onder de tab Opmaak) het aantal kolommen op 3, de kolombreedtes op 0, 6 en 1,2 cm en de lijstbreedte op 7,5 cm. (Deze breedtes zijn niet standaard uiteraard maar verschillen per lijst, daar moet je wat mee vogelen).
Als je nu naar de Formulierweergave gaat en je klikt op het pijltje in het veld 'Gemeente' dan zie je een keuzelijst met alle gemeentes en de bijbehorende postcodes, gesorteerd op alfabet. Als je de gemeente van een leerling wijzigt dan zul je zien dat het veld Postcode erboven automatisch meewijzigt. Dat is te danken aan de koppeling tussen de 'GemID' van de tabel 'Gemeenten' en de 'GemID' van de tabel 'Leerlingen'.
Een ander (belangrijk) gevolg van deze koppeling is, dat in de tabel 'Leerlingen' nu nummers staan in het veld 'GemID' i.p.v. de gemeentenamen. Deze nummers corresponderen uiteraard met de GemID's in de tabel 'Gemeenten'.
In het formulier 'Leerlingen' zie je de GemID's niet omdat ik de breedte van de eerste kolom op 0 (nul) heb gezet. Dáár zie je de gemeentenamen, maar in de onderliggende tabel worden dus de GemID's opgeslagen. En
dát is nou waar het allemaal om draait in Access!
Die eerste kolom, oftewel het eerste veld van een tabel, is in het algemeen de zogenaamde 'Afhankelijke kolom' (als je je tabellen tenminste een beetje logisch opbouwt). Bij de eigenschappen van de keuzelijst zie je ook de eigenschap 'Afhankelijke kolom', die Access standaard op 1 zet.
Ook in het formulier 'Leerlingen' kun je naar hartelust gegevens wijzigen en toevoegen die zonder allerlei omwegen direct opgeslagen worden in de tabel. Voor het gemak heb ik een knop 'Nieuwe leerling' toegevoegd waar een macro aan vastzit waarmee je naar een nieuw record gaat (afijn, die macro's ken je heel goed

).
Je zou ook nog een knop kunnen toevoegen waarmee je naar het laatste record gaat om te zien wat het laatste LLNR is, zodat je het eerstvolgende nummer kunt bepalen voor een nieuwe leerling. Dat is de reden dat ik de query oplopend gesorteerd heb op LLNR én de reden dat ik dit veld naar voren heb gehaald in de tabel.
Voor het veld 'Postcode' heb ik in het formulier 'Leerlingen' de eigenschap 'Tab stop' op 'Nee' gezet en de eigenschap 'Locked' op 'Ja' (ben even de Nederlandse term kwijt, het is de één na laatste eigenschap op de tab 'Gegevens'. Het is
niet de eigenschap 'Ingeschakeld', die moet gewoon op 'Ja' blijven staan!).
Dit heb ik gedaan om wijzigingen, al dan niet per ongeluk, in de postcodes te voorkomen. Postcodes moet je tenslotte wijzigen in het formulier 'Gemeenten'.
Bedenk overigens wel dat je, zoals de tabellen nu opgebouwd zijn, je geen historie bewaart. Als je dus bijvoorbeeld het adres van een leerling wijzigt omdat hij/zij verhuisd is, dan
overschrijf je het huidige adres en het oude adres ben je dan kwijt. Dat is niet handig als er bijvoorbeeld facturen zijn gekoppeld aan de leerling!
Als je de historie wilt bewaren, zul je dus een nieuw record aan moeten maken als een leerling verhuist. En op de een of andere manier aan moeten geven dat je het oude record niet meer mag gebruiken, door bijv. het toevoegen van 'OUD' achter de naam. Of door een extra veld in de tabel te maken, bijv. Actief ja/nee.
Er ontbreken trouwens 4 leerlingen in mijn tabel 'Leerlingen' omdat ze in jouw tabel geen woonplaats hebben. Die kon ik niet invoeren omdat in mijn tabel 'GemID' gekoppeld is aan de tabel 'Gemeenten'.
Goed, heel verhaal weer...

Ik hoop dat je het allemaal een beetje snapt nou. Zo niet dan weet je me wel weer te vinden
Ik kan je aanraden (en dit zul je waarschijnlijk niet leuk vinden...) om helemaal overnieuw te beginnen met je database. Indien gewenst kun je mijn database als startpunt nemen. De basis van je huidige database is gewoon niet goed en hij zit veel te complex in elkaar. Als je dat probeert te corrigeren zul je op allerlei problemen stuiten, met name bij het koppelen van gegevens. Ik kwam er ook een aantal tegen die ik maar niet vermeld heb.
Bovendien heb je kans dat jouw database niet meer helemaal goed werkt omdat je, naar ik aanneem, al heel vaak problemen hebt gehad en dingen hebt gewijzigd. Daar wordt Access vaak niet zo blij van.