2 minutes is definitely a long while for a report to run. This sort of time indicates either a v. large dataset is being processed, or there is a code problem,
so what i was saying was
is it the open and load procedures themselves that are using lots of processor time. These execute first, before the report is populated so you could time these events, and see how long they take. i think you are only examining the first row of the dataset, but i am not completely sure.
you can just put
on the first line of each to temporarily disable them
if it is the detail section, then perhaps it depends what you are doing within the report. Are you making lots of calculations/sub totals etc, in changing the query into the formatted report.
How many lines/pages are there in the report. If you modify the query to restrict the number of rows, what effect does that have on the report time.