Страница 1 из 1

Работа с таблицей, которая заранее неизвестна

Добавлено: 15 июл 2004, 13:25
Deinis
Исходная задача: пользователь в интерфейсе выбирает одну или несколько таблиц БД.
Далее интерфейс, произведя позиционирование на эту таблицу (последовательно на каждую из выбранных) выкладывает записи этой таблицы в соответствующий ей DBF-файл.

Можно ли в интерфейсе производить навигацию (перемещение по записям) таблицы, которая заранее (т.е. на момент написания кода интерфейса и его компиляции в Res-файл) неизвестна? Неизвестно, какую именно таблицу выберет пользователь.

Или может другие возможности имеются на этот счет?

Думал использовать макроопределения:
Interface My1 'Тестирование ' ;
create view
as select *
from
X$Files ( ReadOnly ) // Таблица файлов
,X$Fields ( ReadOnly ) // Таблица полей
,synonym Pick PickedTables // выбранные таблицы
,synonym Pick PickedRecords // выбранные записи в этих таблицах
!where ((
! X$Files.XF$Code /== X$Fields.XE$FileCode
! // описать еще связку для Pick ...
! ))
;
HandleEvent // Main Interface
cmInit : {
#DEFINE M KATED
#IFDEF M
IF ( GetFirst = tsOK )
#ELSE
IF ( GetFirst #M = tsOK )
#END
then DO {

#IFDEF M
} while ( GetNext = tsOK ) ;
#ELSE
} while ( GetNext #M = tsOK ) ;
#END
} // cmInit Main Interface
End; // HandleEvent Main Interface
END. // Main Interface

В данном случае я хочу, чтобы прошла навигация по таблице KATED. При этом в момент компиляции я не хочу жестко прописывать название таблицы, по которой хочу "проходить". Для этого использую директиву условной компиляции #IFDEF (она используется только в момент компиляции Res-файла). Но уже работая в интерфейсе, я хочу получить доступ, например к таблице KatEd.
Но все равно навигация проходит по всей логической таблице (в данном случае - декартово произведение четырех таблиц).
Есть ли какие мысли? Может сталкивались с похожим?

Re: Работа с таблицей, которая заранее неизвестна

Добавлено: 15 июл 2004, 17:18
Vitas
Такое уже реализовано.
Называется: экспорт/импорт в Суппорте.
Можешь выбрать таблицы, выбрать файл, в/из который выганять/загонять данные, можешь выбрать формат типа текст/дбф.

Исходя из того, что это реализованно можно сделать вывод, что реализовать реально, вопрос в другом: на чем? на паскале или на випе это реализовано?

Re: Работа с таблицей, которая заранее неизвестна

Добавлено: 15 июл 2004, 18:14
Deinis
О том, что это там реализовано - знаю. Только мне нужно свое собственное. Не давать же пользователям права на Support!!! Тоже пришел к выводу, что реализовано скорее всего на Паскале.

Вот, посоветовавшись с разными людьми буду делать скорее всего так:
В процессе работы интерфейса буду формировать динамически текст программы, записывать в тексовый файл. Затем компилять программой FComp или VipCompile, после чего запускать эту программу (соответственно, либо RunForm либо RunInterface).

Re: Работа с таблицей, которая заранее неизвестна

Добавлено: 19 июл 2004, 12:27
Vitas
Куда компилять будешь?
В какой рес? Если этот рес подрублен, то амба, докомпилить не получится, если не одключен, то надо будет еще и програмно подрубить.
Лучше формируй програмно скрипт для выгрузки в дбф и запускай со своего фейса vip.exe с этим скриптом.

Делов то :)