Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Если не верите, то тут пример. Это обычный пример SCHOOL.APP. В меню "SQL" 2 пункта: "Browse Teachers with SQL filter" и "Arbitrary SQL Queries".
Первый открывает бровз по связке таблиц Teachers+Majors и позволяет задать фильтр типа
select s.lastname || ' ' || s.firstname as "full name", s.Number as number,
s.GradYear as "grad year", m.description as major,
s.city as city, s.telephone as phone
from students s
join majors m on m.number=s.major
order by s.lastname
Ну, насколько я могу предположить, создают in memory базу данных на sqlite, закачивают в нее данные из tps и оттуда тягают запросами.
В принципе, ничто не мешает также написать на кларионе анализатор sql и преобразовывать его к стандартному синтаксису работы с tps. Для битрива я знаю, такое умельцы делали, без sql надстройки первасива. Но это уже работа, требующая мыслительного процесса.
Основной вопрос, а нафига все это надо. ODBC я еще понимаю, для доступа к tps из других (не кларионовских) программ.
finsoftrz писал(а): ↑13 Ноябрь 2018, 8:06создают in memory базу данных на sqlite
Это как такое возможно-то ? Как я понял - SQLite здесь используется в качестве транслятора языка запросов T-SQL
для получения списка колонок, а сама реализация выборки идёт через VIEW{Prop:SQLFilter}.
(что подразумевает наличие VIEW с описанными связями таблиц).
finsoftrz писал(а): ↑13 Ноябрь 2018, 8:06создают in memory базу данных на sqlite
Это как такое возможно-то ? Как я понял - SQLite здесь используется в качестве транслятора языка запросов T-SQL
для получения списка колонок, а сама реализация выборки идёт через VIEW{Prop:SQLFilter}.
(что подразумевает наличие VIEW с описанными связями таблиц).
Это стандартная опция в sqlite. Делается элементарно с получением результата запроса в кларионовскую кьюшку. Читаем Ричарда Тейлора. То есть схема, напоминающая кэширование физических таблиц в InMemory драйвере. Если я неправ, дедушка поправит. Я других вариантов не вижу.
finsoftrz писал(а): ↑13 Ноябрь 2018, 10:18с получением результата запроса в кларионовскую кьюшку
Бррр … Получение результата запроса в QUEUE - это действительно элементарная операция. Здесь согласен.
Но по БД SQLite. Или "создают in memory базу данных на sqlite" - это так теперь называется QUEUE с результатом запроса ?
finsoftrz писал(а): ↑13 Ноябрь 2018, 10:18с получением результата запроса в кларионовскую кьюшку
Бррр … Получение результата запроса в QUEUE - это действительно элементарная операция. Здесь согласен.
Но по БД SQLite. Или "создают in memory базу данных на sqlite" - это так теперь называется QUEUE с результатом запроса ?
Нет, при создании базы в sqlite указывается опция "таблица в памяти", тогда она размещается не на диске, а в памяти. Работа с базой в памяти идентична работе с базой на диске.
finsoftrz писал(а): ↑13 Ноябрь 2018, 10:48Нет, при создании базы в sqlite указывается опция "таблица в памяти"
Понял. Спасибо. Пардон - я этого действительно не знал. Надо будет посмотреть - это интересно !
Но тогда получается, что если TPS файлы загоняются в In Memory SQLite и по ним делается SQL запрос … то этот пример просто обман ?
Я всё-таки склоняюсь к идее, что тут как-то (?!) задействован VIEW{Prop:SQLFilter} для TPS списков.
Но тоже не бест - т.к. требует описания структуры VIEW и связей между списками.