Probably not, actually.
Storing derived data such as this in your table accomplishes
three things: it wastes disk space; it wastes time (almost
any calculation will be MUCH faster than a disk fetch); and
most importantly, it risks data corruption. If one of the
underlying fields is subsequently edited, you will have data
in your table WHICH IS WRONG, and no automatic way to detect
that fact.
Just redo the calculation whenever you need it, either as a
calculated field in a Query or just as you're now doing it -
in the control source of a Form or a Report textbox.
I would disagree. Invoice calculations are one thing that perhaps
should *not* be calculated on the fly.
First off, you need to record the VAT/tax percentage or amount,
rather than just storing a pointer to a tax rate lookup, because the
rate can change.
Secondly, because you're dealing with floating point operations, I
think it's better to store the rounded results of calculations,
rather than calculating them on the fly.
Thus, I would store:
1. invoice subtotal (before tax), appropriately rounded.
2. tax amount, appropriately rounded.
There is no need to store the total of those two fields, but I think
it is valuable to store both, as calculating the subtotal for large
numbers of invoices can be a real performance drain.
This is the voice of experience speaking here, not theory. I have an
app that went into production use in early 1998 that now has over
100K invoices. Calculating customer balances on that many invoices
without storing subtotals would be crippling (indeed, it *was*
crippling until I rewrote the app to store the subtotal).