Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Cannot update read only cursor
Message
From
07/03/2019 22:20:53
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01667097
Message ID:
01667104
Views:
90
This message has been marked as the solution to the initial question of the thread.
>>>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)
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform