I used the Report Wizard to create a report just containing the fields I want from the table
This might be where you went off track. The report should be based on the query. The query should do the calculations and if need be, call the function, although I'm not following why you need that. Perhaps there are complex calculations or decisions that calls for a function rather than a calculated query field. Then you bind the current unbound report field to the query that does what the report function call does. The report grouping and sorting properties will override any query grouping or sorting so just worry about getting the query data correct unless you need to sort it to make validation easier.
One thing you must remember wrt reports, datasheets and continuous forms: there is really only 1 textbox of any name - it just gets repeated. It is possible to follow such a path as you're on only to find out that being an unbound control on one of these object types leaves you with the same value in every record in that field. This would not be the case if it's a bound field, but can happen if it's not bound.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.