Er verschijnt licht aan de horizon... Maar je hebt nog geen zonnebril nodig

Kortom: er zitten nog wel wat foutjes in.
Om te beginnen: je hebt de relatie tussen de twee tabellen wel gelegd, maar hij is nog niet erg zinvol. Relaties werken pas goed, als je de optie <Referentiële integriteit afdwingen> aanzet. Hiermee voorkom je dat je in de afhankelijke tabel waarden kunt invoeren, die je niet hebt staan in de brontabel. Oftewel: geen werkbon maken voor opdrachtgevers die je nog niet hebt. Klinkt logisch, niet? In de afbeelding zie je hoe je die aanpassing kunt maken. Dubbelklikken op de relatielijn, en je ziet de opties.
De andere foutjes zitten in het formulier, en zijn ook in één plaatje weer te geven.
Om te beginnen: je hebt nog niet de
Naam van de keuzelijst aangepast, en je hebt de eigenschap <Aantal kolommen> verwisseld met <Afhankelijke kolom>. Het aantal kolommen dat je aan een keuzelijst hangt, is afhankelijk van het aantal velden dat in de query zit. Heb je 7 velden in de query, dan heb je ook 7 kolommen nodig. De eigenschap <Afhankelijke kolom> gebruik je om aan te geven welke kolom de waarde bevat die je wilt opslaan of gebruiken. Meestal is dat de eerste kolom, dus daar moet in jouw geval de waarde 1 staan.
Je had deze formule als Besturingselementbron gemaakt voor het textvak Opdrachtgever:
txtOpdrachtgever=cboOpdrachtgever.Column(1).Value
Hierbij is cboOpdrachtgever de naam van de keuzelijst die je wilt gebruiken. Maar die heb je nog niet, want je keuzelijst heet
OpdrachtgeverID Deze keuzelijst had je gekoppeld aan het veld [Opdrachtgever], een veld dat niet bestaat in de tabel. Dus dat kan ook niet. Een keuzelijst wordt, als je de waarde van die keuzelijst wilt opslaan, meestal anders genoemd dan het veld dat je er aan koppelt. Vandaar dat ik de naam cboOpdrachtgever voorstelde, i.p.v. de veldnaam OpdrachtgeverID. Als je later wilt verwijzen naar de waarde van de
Keuzelijst, dan moet die anders heten dan het
Veld waarop hij is gebaseerd. Het is overigens niet verplicht om dat te doen, maar het maakt alles wel makkelijker terug te vinden.
Dus: de naam van de keuzelijst heb ik aangepast, zoals je in de afbeelding kunt zien. De keuzelijst cboOpdrachtgever is dus gekoppeld aan het veld OpdrachtgeverID, bevat 7 kolommen waarvan kolom 1 wordt gebruikt om op te slaan.
De tekstvakken die gebruik maken van de keuzelijst, waren ook niet goed ingesteld.
Zoals gezegd, je formule txtOpdrachtgever=cboOpdrachtgever.Column(1).Value bevat ook een paar foutjes. Om te beginnen: je zet een formule in de Eigenschappen van een tekstveld. Je hoeft dus nooit te verwijzen naar een tekstveld. Verder hoef je alleen maar te verwijzen naar de kolom; de waarde wordt dan vanzelf opgehaald.
Op het teksvak txtOpdrachtgever zet je dus deze formule:
=cboOpdrachtgever.Column(1)
Zie ook weer het plaatje voor de overige instellingen.
Hopelijk kan je weer een stukkie verder...