Работа с таблицей, которая заранее неизвестна
Добавлено: 15 июл 2004, 13:25
Исходная задача: пользователь в интерфейсе выбирает одну или несколько таблиц БД.
Далее интерфейс, произведя позиционирование на эту таблицу (последовательно на каждую из выбранных) выкладывает записи этой таблицы в соответствующий ей 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.
Но все равно навигация проходит по всей логической таблице (в данном случае - декартово произведение четырех таблиц).
Есть ли какие мысли? Может сталкивались с похожим?
Далее интерфейс, произведя позиционирование на эту таблицу (последовательно на каждую из выбранных) выкладывает записи этой таблицы в соответствующий ей 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.
Но все равно навигация проходит по всей логической таблице (в данном случае - декартово произведение четырех таблиц).
Есть ли какие мысли? Может сталкивались с похожим?