define class redirect_dataenvironment as custom DataPath='C:\yourdatapath' *** If u use more then one database/directory then *** u shld develop this method to respond correctly. procedure get_database lparameters cDatabaseName local cDatabaseName return addbs(this.DataPath) + cDatabaseName procedure redirect_de lparameters oDataEnvironment local i,j,db_name,arr_obj(1) amembers(arr_obj,oDataEnvironment,2) for i = 1 to alen(arr_obj) j = oDataEnvironment.&arr_obj(i) .baseclass if upper(alltrim(j)) = 'CURSOR' db_name=upper(justfname(allt(oDataEnvironment.&arr_obj(i) .database ))) oDataEnvironment.&arr_obj(i) .database=this.get_database(allt(db_name)) if !file(oDataEnvironment.&arr_obj(i) .database) messagebox('['+oDataEnvironment.&arr_obj(i) .database+']'+chr(13)+; 'Not found Check your data') endif endif endfor enddefineSo somewhere at the startup of application you create public object
Public oData oData=createobject('redirect_dataenvironment')and then in each form's de you add folowing line in BeforeOpenTables
***BeforeOpenTables oData.redirect_de(this)Solution hv to be upgraded to support free tables if you use them.