Your ChangeTray UDF opens report table in the current work area closing whatever table/cursor was open there befor. Add SELECT 0 to open it in the first unused workarea.
SELECT 0
use (tcReportName + '.frx')
..
BTW, you don't have to exclude report the project. You could copy it to a temp report, modify it and run.
>I am trying the approach from Cathy Pountney’s book “The Visual FoxPro Report Writer: Pushing it to the Limit and Beyond” to change the Expr field in MyReport.frx on the fly by editing the "DEFAULTSOURCE=" setting. It works fine in testing from the command prompt.
>
>Inside my program, it blocked the edit saying that the file was read only. I “excluded” the report from my Project Manager and that problem was solved. The remaining problem happens after I run this from a cmdButton(click) on my form:
ChangeTray("MyReport",3)
>report form ("MyReport") preview
>
>When control returns to my calling program, its data environment is empty, giving me messages like “No table is open in the current work area.” My calling form uses a private data session, and my report uses a private data session. The metacode for ChangeTray looks like
parameters tcReportName, tnTray
>use (tcReportName + '.frx')
>go top
>* Put tcReportName.Expr content into the array aLines
>* Find the “DEFAULTSOURCE=” line in aLines and change it to new tray #
>* Replace tcReportName.Expr with modified content
>use
>return
I am using the simple SET REPORTBEHAVIOR 80
>Any Ideas as to what is causing my problem?
>
>Bob
--sb--