I vote for the temp, or as I call it, a staging table because as soon as you say temp table people start warning you to not do make table queries all the time. That table would have all fields required for the report and get the records from an append query so I don't get that comment about missing fields. This solution eliminates any DLookups and any fields can be altered without affecting the original data. When you're done, you simply dump the staging data.
You could also just pass a recipient value to the report via report OpenArgs and use it from there.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.