do setDE with this.dataenvironmentOf course, you can do it at the class level. In case form.load is too late, you may call it from dataenvironment.BeforeOpenTables - "do SetDE with this".
lparameters oDE oDe.AutoOpenTables=.f. for each oCursor in oDE.objects if oCursor.baseclass="Cursor" && skip relation objects if not empty(oCursor.Database) oCursor.database= < -- this is where you put your production database name --> endif if at("\", oCursor.CursorSource) oCursor.Cursorsource=forcepath(oCursor.Cursorsource, < -- your path -->) endif endif endfor oDE.opentables()The names of your database and free tables (if any) can either be manually coded, retrieved from a local ini file or... I think you will manage. The whole reason for this is that in .scx files the full paths to databases and tables are compiled into the code, while in the PEM sheet they are shown as any other paths, so you think they are relative. They are recalculated into relative paths only if the original paths are inaccessible, which you can test by renaming the directory where the original files are.