In column(1) wordt in deze de RateId (waarde van de wisselkoers) opgeslagen, Column 2 is in deze soort valuta, CurrencyId.
Ik neem aan dat je hier de 'boerenverstand' telling mee bedoeld, en dat je in de keuzelijst dus 2 kolommen hebt gezet met daarin de velden [RateID] en [CurrencyId]. Het veld [CurrencyId] komt dan wellicht uit de tabel [Currency]? Zo ja: dan zou ik in die tabel ook een veld [CurFormat] opnemen waarin je de opmaak van de verschillende valuta vastlegt. (Tekstveld dus). Je keuzelijst krijgt dan 3 kolommen: [RateID], [CurrencyId] en [CurFormat]. Je hebt dan de hele constructie niet nodig en kunt de format gelijk instellen vanaf de keuzelijst.
Maar eerst even de uitleg waarom boerenverstand in dit geval niet werkt
. Keuzelijsten hebben een 'Afhankelijke kolom'. Dat is de kolom die de waarde bevat die je wilt uitlezen uit de keuzelijst. Standaard is dat kolom 1. In bovenstaand voorbeeld is dat dus het veld [RateID]. Wil je de standaard waarde uitlezen, dan kun je volstaan met de opdracht
Select Case Me.cboCurrency.Value waarbij je
.Value zelfs mag weglaten. Doe ik overigens zelden, want er zijn omstandigheden waarin de code fout gaat als je dat doet. En dat risico neem ik liever niet.
Wanneer en waarom gebruik je dan
Me.cboCurrency.Column(1).Value? Als je een vergelijking wilt maken met een
andere kolomwaarde uit de keuzelijst dan de standaardwaarde. En daarbij is het belangrijk dat je je realiseert dat Access dan begint te tellen
vanaf 0. En dus niet vanaf 1! Dus als je, weer volgens voorbeeld, niet het veld [RateID] wilt zien, maar de waarden uit [CurrencyId] of [CurFormat], dan doe je dat met resp.
Me.cboCurrency.Column(1).Value en
Me.cboCurrency.Column(2).Value. De waarde die je bij Column(#) invoert is dus altijd één lager dan het aantal kolommen dat je hebt, beginnend vanaf kolom 1 (Column(0)) tot kolom 5 (Column(4)).
Als kolom 1 de Afhankelijke kolom is, dan is
Me.cboCurrency.Column(0).Value dus hetzelfde als
Me.cboCurrency.Value. En is kolom 2 de afhankelijke kolom, dan is dit hetzelfde:
Me.cboCurrency.Column(1).Value en
Me.cboCurrency.Value.
Ik hoop dat het nu wat duidelijker is
. Zoals ik eerder zei, zou ik de opmaak in de tabel Currency zetten en als derde kolom toevoegen aan de keuzelijst. Dan wordt het een stuk simpeler:
Code:
Private Sub cboCurrency_Click()
Me.txtCommisionSolid.Format = Me.cboCurrency.Column(2).Value
Me.AdditionalCost.Format = Me.cboCurrency.Column(2).Value
End Sub
Nogmaals de tip: stop met AfterUpdate, en gebruik Click. Vele malen beter...