"however it does not update until the record is saved"
Well, until the new values are saved in the table(s), it's not going to update.
If you really want an 'instant' update , then add the following code to the AfterUpdate event of each control where you enter data:
Me.Dirty = False ' ** save the record
Me.ReCalc ' ** recalculate the DLookup()
mx