Voordat ik een correct antwoord kan geven, zou ik meer moeten weten over de inrichting van je db.
Je hebt het over een checkbox, en dan ga ik er gelijk vanuit, dat die op een formulier staat. Dat formulier is waarschijnlijk op een tabel gebaseerd. Dat zou bijvoorbeeld de tabel Klanten kunnen zijn, waarin je per klant aangeeft of hij in het hoge of in het lage BTW tarief valt.
Je kunt echter ook per transactie aangeven of een order in het hoge of lage tarief valt. Die info ontbreekt in jouw vraag. Maakt ook niet zoveel uit voor de berekening.
Normaal gesproken heb je in de tabel die je gebruikt een Ja/Nee veld gemaakt voor de checkbox. Dat hoeft overigens niet, het zou ook een numeriek veld kunnen zijn, maar laten we voor het gemak maar uitgaan van een Ja/Nee veld.
Dat zie je in je tabel terug als een aankruisvakje, en dat wil je logischerwijs ook op je formulier als zodanig terug zien.
Tot zover de tabelinrichting.
Een Ja/Nee veld slaat een getal op; -1 voor Ja, dus aangekruist, en 0 voor Nee. Als je een berekening wilt maken in een query, dan moet je deze waarden dus gebruiken in je berekening. In jouw geval krijg je dan: als de waarde van het veld BTW Ja is (dus -1), dan het lage BTW percentage gebruiken (6%), anders het hoge tarief (21%).
In Access vertaal je dat als:
Code:
IIF([chkBTWLaag]=-1;0,06;0,21)*[Bedrag])
Je hebt hiervoor het commando IIF nodig, en niet, zoals je misschien zou verwachten, IF (de logische vertaling van ALS).
Dus de formule is: ALS chkBTWLaag is WAAR ( -1 als opgeslagen waarde), doe dan: [Bedrag] * 0,06, anders: [Bedrag] * 0,21.
Deze formule kun je gewoon in een query plakken, en heeft dus verder niks met VB te maken. Je kunt hem zelfs in je formulier gebruiken, op een niet-afhankelijk tekstvak. Maar dan zie je de uitkomst alleen, en wordt hij niet opgeslagen.
Dat is waarschijnlijk de volgende vraag...
Michel