keuzelijst: beide velden opslaan

Status
Niet open voor verdere reacties.

Bospeen

Gebruiker
Lid geworden
23 aug 2005
Berichten
150
Ik heb een keuzelijst (obv een tabel) die 2 waarden toont.
Is het mogelijk om beide waarden (column 0 én 1) van de keuzelijst op te slaan in 2 verschillende velden van een tabel?

(deze vraag klinkt misschien niet logisch, maar heeft elders in de applicatie wat performance voordelen)
 
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 artikelnaam 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.
 
Je zegt <Bij klikken>, heb je dit bewust gekozen of kan ook <Na bijwerken>?
 
Het is een keuzelijst; als jij een zinvolle reden weet om daar <Na bijwerken> te gebruiken, dan hou ik mij graag aanbevolen.
 
Het lijkt me logisch om de gebeurtenis alleen dan uit te voeren als de inhoud van het veld (keuzelijst) ook daadwerkelijk wijzigt (na bijwerken dus), maar of 't ook noodzakelijk is... nee, dat niet. Het resultaat van <bij klikken> is volgens mij hetzelfde, ik vroeg me alleen af of dit event een bewuste keus was.
 
Het lijkt me logisch om de gebeurtenis alleen dan uit te voeren als de inhoud van het veld (keuzelijst) ook daadwerkelijk wijzigt (na bijwerken dus)
Deze zin klopt niet helemaal. De inhoud van een keuzelijst verandert natuurlijk niet, tenzij je het hebt over een keuzelijst waarvan de inhoud wordt bepaald door een ander object zoals een andere keuzelijst of een tekstvak. De gemaakte keuze op een keuzelijst verandert natuurlijk wel, en die verandert zodra je ergens op klikt. Dát is dus het moment dat ik wil triggeren als ik in een keuzelijst (met invoervak) ergens op klik, en dat doet de gebeurtenis <Bij klikken>. De gebeurtenis <Na bijwerken> treedt alleen op als je een object hebt verlaten. In het geval van een keuzelijst: als je een ander object hebt gekozen met de tab of een klikje. Dat is dus helemaal geen handige gebeurtenis als je in een tekstveld een waarde wilt zien uit de keuzelijst; die waarde wil je namelijk al zien op het moment van de selectie. Ik gebruik <Na bijwerken> dus zelden; eigenlijk alleen bij tekstvelden waarbij ik de controle pas wil doen als de invoer compleet is. Denk aan een check op BSN nummers, of postcodes.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan