the change event should not make a difference providing the user always uses a mouse to select from the dropdown. I don't know what currency type is but if the user was to type the name of the type the change event is triggered for each press of a key - would be better if this code was in the after update event - although if it is updating a control on your form, you could just put
= [ForeignValue] * [Currency].[Column](3)
in the cTotal controlsource
However the main issue is your bound column - your controlsource is currency (which is a reserved word by the way - it is a data type - so using it can cause unexpected and misleading errors. I strongly recommend you change it to currencyID or similar), but you have bound to the currencydate column which is a datetype. So if you have 2 or more currencies with the same currencydate, the combo will display the first row it comes to with the selected date. This is the reason your combo is not changing. I would expect the bound column to be 1 (the ID field)
It is slightly confusing but the bound column starts at 1, whilst the column numbers start from 0 - so bound column 1 is actually column 0.
It will help you to give all fields meaningful names - I've mentioned currency, but also ID - it has no context - ID of what? call it currencyID or whatever table it is ID of.
Personally I prefer to use CurrencyPK (for Primary Key) and CurrencyFK (for Foreign or Family Key) so it is also clear 'which end' of a relationship the field belongs.
I don't know what you are trying to achieve, but I suspect you need to look at (I assume) your two tables, one for currency names and one for rates and review how they work together in a query - it may be that you have the relationship as one currency, many rates but in your query you are really looking at the rates and then looking up the currency name it applies to - in which case the ID you need to be storing in your currency field is the ID of the rate, and not (as I suspect) the ID of the currency.