The an answer has to be in the report. Your code merely creates a new form (which doesn't change or reset vars), shows it (which doesn't change or reset vars), runs a report with it as preview window ((which doesn't change or reset vars, unless the report does), and then releases this preview window.
We can't help you without knowin what is happening in the report.
Look into:
1. The reports data environment. There can be code in it.
2. Report controls. There can be function calls in it.
3. Report Variables
4. Report data sessyion, is it private or not?
4. If in doubt USE your.frx and see if you find calls in it.
Then of course inspect the code called from the report.
On the other side, if you talk about variables defined in your main form buttons click code, eg by LOCAL, then of course these variables reset to .F. Variables don't keep their value forever, typically they are released after code has run, that's not only true for local, but also undeclared variables, which are then private.
I wonder if you really talk about variables, but talk about form control values, eg textbox value, or form properties.
If you issue a refresh and the report has moved to EOF of the table you report, that may mean you don't stay on the record your form showed previous to the report, but then you also don't have reset variables, you have another record and of course all bound controls on your form now show no value anymore. Eg use some table, then go bottom, then Skip 1, now read any field value, eg ? Eval(FIELDS(1)), it would be an empty string, 0 or NULL, an empty date, whatever the field type is, as you are after EOF of the table.
Bye, Olaf.