I'm not sure why it is doing it...it don't generally use the FOR clause of REPORT FORM, and you are changing the value of the field on the fly.
I would be more inclined to do the REPLACE at the end of the report (for example, add a group on eof(), and put your UDF call there). That way it is an all or nothing deal...if user cancels the report.
select owrk
replace flagged with "P" for flagged == "R"
>
>Hmmm...if you disable the call to the UDF (regarding wExist()), does it print properly?>
>I did, and yes it does! But why??
>
>Here's the entire UDF (which was called from the OnExit of the detail band)
>
>FUNCTION Rcd_Prntd
>IF WEXIST("Printing...")
> REPLACE owrk.flagged WITH "P"
>ENDIF
>RETURN
>ENDFUNC
>
>
>Now, taking this out breaks some other logic later in the program....
Steve Gibson