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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

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

Сообщение 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.
Но все равно навигация проходит по всей логической таблице (в данном случае - декартово произведение четырех таблиц).
Есть ли какие мысли? Может сталкивались с похожим?
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

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

Сообщение Vitas »

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

Исходя из того, что это реализованно можно сделать вывод, что реализовать реально, вопрос в другом: на чем? на паскале или на випе это реализовано?
Ищу возможности довести и так отличный продукт до еще большего блеска
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

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

Сообщение Deinis »

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

Вот, посоветовавшись с разными людьми буду делать скорее всего так:
В процессе работы интерфейса буду формировать динамически текст программы, записывать в тексовый файл. Затем компилять программой FComp или VipCompile, после чего запускать эту программу (соответственно, либо RunForm либо RunInterface).
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

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

Сообщение Vitas »

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

Делов то :)
Ищу возможности довести и так отличный продукт до еще большего блеска
Ответить