Dat kan, al zie ik de voordelen niet zozeer op het gebied van performance, want dan doe je m.i. iets verkeerd, maar wel op het gebied van gegevensintegriteit. Als voorbeeldje (voor de meelezende medemens) een keuzelijst waarin je een artikel opzoekt bij een bestelling, en ook de prijs nodig hebt. Dit omdat prijzen dynamisch zijn, en je de prijs wilt berekenen die geldig is op het moment van de bestelling, en niet een jaar later op de factuur ineens een heel andere prijs ziet staan. Dus bij een artikel wil je zowel het artikelnummer in de record als de prijs opslaan.
Daarvoor ga je als volgt te werk: je koppelt het veld Artikelnr aan het ArtikelID uit de keuzelijst door dat veld als eerste in de query van de keuzelijst te zetten. De prijs zet je dan als derde kolom neer, en de artikel
naam als tweede kolom, want die wil je immers kunnen opzoeken. De eerste kolom krijgt dan een breedte van 0cm zodat je die niet ziet.
De keuzelijst krijgt dan een gebeurtenis <Bij klikken> en die gebruik je om het veld [Prijs] te vullen. Die code ziet er dan zo uit:
Code:
Me.ArtikelPrijs.Value = Me.cboArtikel.Column(2)
Ik heb wat objectnamen genomen die ik zelf zou gebruiken. Die kan je vast wel aanpassen aan je eigen situatie. De kolomverwijzing klopt met mijn voorbeeld, waarin Prijs de
derde kolom is; Access telt namelijk vanaf kolom 0. En dan is (2) dus de derde kolom.