>>>Hi,
>>>
>>>The following code works when I run it from the VFP 9 IDE. But when I compile the program and run it from the .EXE I get error "Cannot update the cursor 3733373 since it is read-only"
>>>
>>>What am I missing?
>>>
>>>
>>>lTempAlias = sys(2015)
>>>STRTOFILE(FILETOSTR("ReportName.FRX"), FORCEPATH("ReportName.FRX", getEnv("temp")))
>>>STRTOFILE(FILETOSTR("ReportName.FRT"), FORCEPATH("ReportName.FRT", getEnv("temp")))
>>>USE (FORCEPATH("ReportName.FRX", getEnv("temp"))) ALIAS (lcTempAlias) IN 0
>>>REPLACE Expr WITH m.lcExpression IN (lcTempAlias)
>>>
>>>
>>>
>>>TIA
>>
>>* I assume the first line is a typo "lTempAlias" should be "lcTempAlias"
>>* Make sure that the table name being returned by GETENV() doesn't match a table included in the project (i.e. the path doesn't matter in this case).
>
>the lTempAlias is just a typo in my message.
>
>But I don't understand your input regarding GETENV(). In my case GETENV("temp") returns the name of the TEMP folder. How would this affect the USE and REPLACE?
My mistake -- GETENV() isn't the issue.
What is probably the issue is that after you copy RepotName.FRX and ReportName.FRT to an external location, then ask FoxPro to open that external file, it opens the internal file (even if you specified the full path to the external one). The workaround is to use function SYS(2015) to generate a filename for the external copy.
lcTempAlias = sys(2015)
lcExtName = FORCEPATH( "RPT_" + TRANSFORM(_VFP.PROCESSID) + "_" + SUBSTR(SYS(2015),3,10), GETENV("temp"))
STRTOFILE(FILETOSTR("ReportName.FRX"), m.lcExtName+".FRX")
STRTOFILE(FILETOSTR("ReportName.FRT"), m.lcExtName+".FRT")
USE (m.lcExtName+".FRX") ALIAS (lcTempAlias) IN 0
REPLACE Expr WITH m.lcExpression IN (lcTempAlias)