Перезагрузка данных из разных каталогов
Димон (impekt@sci.smolensk.ru)
Если Вам приходится часто перегружать в программе данные из разных каталогов и Вы еще не решили как это сделать то данный код для Вас. Для работы необходимо вставить код, в DataEnvironment.BeforeOpenTable и перед этим создать глобальную переменную "Рабочий_каталог", со слешем на конце в которой прописать путь к данным, например:
C:MyProgaData1999
После этого при открытии таблиц в DataEnvironment данные будут браться из указанного выше каталога. Для перезагрузки данных не надо закрывать форму. Достаточно сделать следующие действия.
ThisForm.DataEnvironment.CloseTables
Рабочий_Каталог= 'C:MyProgaData2000'
ThisForm.DataEnvironment.OpenTables
**** Код процедуры перезагрузки
AMEMBERS(la_Cursors,ThisForm.DataEnvironment,2)
WITH ThisForm.DataEnvironment
FOR ln_Cot=1 TO ALEN(la_Cursors,1)
lc_Cursor=la_Cursors(ln_Cot)
IF .&lc_Cursor..BaseClass = 'Cursor'
IF NOT '' $ .&lc_Cursor..CursorSource lc_Table=SUBSTR(.&lc_Cursor..DataBase,RAT('',.&lc_Cursor..DataBase)+1,;
LEN(.&lc_Cursor..DataBase)-RAT('',.&lc_Cursor..DataBase)) .&lc_Cursor..DataBase=РАБОЧИЙ_КАТАЛОГ+lc_Table
ELSE
lc_Table=SUBSTR(.&lc_Cursor..CursorSource,RAT('',.&lc_Cursor..CursorSource)+1,; LEN(.&lc_Cursor..CursorSource)-RAT('',.&lc_Cursor..CursorSource)) .&lc_Cursor..CursorSource=РАБОЧИЙ_КАТАЛОГ+lc_Table
ENDIF
ENDIF
ENDFOR
ENDWITH