IIRC the form reference is evaluated for each record - usually not so bad if there are not other issues such as hundreds of thousands of records.
I like the parameter idea (can't recall if that means the reference is evaluated once or for each record).
Alternatively, you could also
- build the sql in code instead and base the report on it (if it's not too long),
- alter the query def then open the report. Use either a value for the criteria or a variable containing the criteria value.
- use the report filter property
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.