******************************************** IF THISFORM.DataEnvironment.AutoOpenTables = .T. * Tables are already opened, can't change the database property RETURN ENDIF LOCAL lnCnt, loObj, lcDBC LOCAL ARRAY laList[1] * If the application object does not exist because we are running in test mode, don't change the paths IF TYPE('oApp.Name') <> "C" RETURN ENDIF lcdataPath = oApp.DataPath *** 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 = lcDataPath + lcDBC ELSE *** Free Table lcDBC = SUBSTR( loObj.CursorSource, RAT('\',loObj.CursorSource )) loObj.CursorSource = lcDataPath + lcDBC ENDIF ENDIF NEXT ENDIFI hope this helps. If you are still have questions, fire away.