LOCAL lnCnt, loObj, lcDBC, lcNewDataPath lcNewDataPath = ***A property or somethign with your Datapath in it LOCAL ARRAY laList[1] *** Get Object Members of DE =AMEMBERS(laList, THISFORM.DATAENVIRONMENT, 2) IF EMPTY(laList[1]) *** Nothing in DE RETURN ENDIF IF ALEN( laList,1 ) > 0 FOR i = 1 TO ALEN(laList,1 ) loObj = EVAL("ThisForm.DataEnvironment."+laList[i]) IF LOWER(loObj.BASECLASS ) = 'cursor' AND "\" $ loObj.DATABASE IF !EMPTY(loObj.DATABASE) *** Contained Table lcDBC = SUBSTR(loObj.DATABASE, RAT('\', loObj.DATABASE)) loObj.DATABASE = tcNewDataPath + lcDBC IF !DBUSED(loObj.Database) OPEN DATABASE (loObj.Database) ENDIF SET DATABASE TO (loObj.Database) ELSE *** Free Table lcDBC = SUBSTR( loObj.CursorSouce, RAT('\',loObj.CursorSouce)) loObj.CursorSouce = tcNewDataPath + lcDBC ENDIF ENDIF NEXT ENDIF * Now open the tables Thisform.DataEnvironment.OpenTables()