Страница 2 из 3

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 13 Ноябрь 2018, 15:08
kreator
А для тех, кто в танке - текста нет в выложенном примере? Скачать не могу, на работе.

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 13 Ноябрь 2018, 15:35
finsoftrz
Неа, только exe. Но без sqlite3.dll не запускается.

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 13 Ноябрь 2018, 19:49
Developer
finsoftrz писал(а): 13 Ноябрь 2018, 15:35 Неа, только exe. Но без sqlite3.dll не запускается.
Очень интересный пример :D
Надо искать исходники или "смоделировать" предположения реализации.

У меня работает без библиотеки sqlite3.dll в текущем каталоге, может настройках путей системы есть доступ к ней :wink:

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 13 Ноябрь 2018, 20:17
finsoftrz
Конечно, надо папочку клариона переименовать, например... А можете и не париться, я уже проверял.

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 13 Ноябрь 2018, 20:22
Игорь Столяров
Пойдём логическим путём, хотя до Нового года ещё время есть … ;)

1. По сути, таблицы SQLite ничем не отличаются от TPS;
2. SQLite - проект OpenSource, т.е. никто не мешает подменить таблицы SQLite на TPS …
3. Видимо, для простоты, используется некоторые вызовы готовых функций SQLite. Например трансляция T-SQL.
4. Не так давно, ДП "откларионил" какой-то OpenSource парсер JSON, видимо это продолжение проекта … ;)

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 13 Ноябрь 2018, 23:49
kreator
Забавно. Мои наблюдения. База в броузе - tps. Потому что, изменение teachers.tps внешним средством сразу отображается в броузе. Русские буквы в базе поддерживаются. В SQL запросах не поддерживаются. Что может быть? ODBC-драйвер tps, sqlite3.dll - скрыть правду. Второй вариант. SQL синтаксис "на лету" преобразуется в обычный кларионовский код. Но несколько вариантов я проверил, не поймал.
В Query по-другому. Изменение в БД не приводят к изменениям в запросе. Закрытие этого окна и вновь открытие приводит.
Похоже как-то создаётся всё-таки SQLite база.
Ну и напоследок вот такая фигня.
test.png
Запись должна быть по идее одна и та же. Но броуз сработал как-то хитро. Одна запись из базы tps, другая из созданной в памяти SQLite. Чтобы получить такую картину, не надо нажимать на кнопку Apply, нужно колёсико мышки крутануть. Похоже, "синхронизация" баз происходит при нажатии на кнопки Apply и Reset.

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 14 Ноябрь 2018, 11:54
Yufil
Решил посмотреть, как оно работает с трассировкой по драйверу tps. Вызвал trace.exe и прописал трассировку. Запустил, всё сработало, посмотрел. Решил трассировку отключить - и облом!

В общем, при первом обращении создался файл c:\Users\Yufil\AppData\Roaming\SoftVelocity\Clarion\10.0\drivers.ini
А при повторном - c:\Users\Yufil\AppData\Roaming\SoftVelocity\Clarion\drivers.ini.
Естественно, сбросить трассировку у меня не получилось, пришлось искать файлы и удалять передними конечностями...

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 14 Ноябрь 2018, 18:42
Yufil
Developer писал(а): 13 Ноябрь 2018, 19:49
finsoftrz писал(а): 13 Ноябрь 2018, 15:35 Неа, только exe. Но без sqlite3.dll не запускается.
Очень интересный пример :D
Надо искать исходники или "смоделировать" предположения реализации.

У меня работает без библиотеки sqlite3.dll в текущем каталоге, может настройках путей системы есть доступ к ней :wink:
Дизассемблировал программу - четыре функции из sqlite3.dll используются....

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 14 Ноябрь 2018, 19:59
Дед Пахом
Спасибо за интересное обсуждение и указанные недочёты ;-)

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 14 Ноябрь 2018, 22:47
kreator
Дед Пахом писал(а): 14 Ноябрь 2018, 19:59 Спасибо за интересное обсуждение и указанные недочёты
Молодец!!! Только мне пока смысл решения непонятен.

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 14 Ноябрь 2018, 23:03
RaFaeL
Смысл например может быть такой: у нас основное (коммерческое) приложение на MS SQL, плюс есть бесплатная однопользовательская демо-версия на TPS. Местами код пишется два раза - для SQL запросы, для TPS по старинке. Наверное, решение позволило бы этого избежать. Правда, у нас еще куча хранимок, х.з. как тут с этим, не вникал

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 15 Ноябрь 2018, 0:29
arlean1
kreator писал(а): 13 Ноябрь 2018, 23:49Запись должна быть по идее одна и та же. Но броуз сработал как-то хитро. Одна запись из базы tps, другая из созданной в памяти SQLite. Чтобы получить такую картину, не надо нажимать на кнопку Apply, нужно колёсико мышки крутануть. Похоже, "синхронизация" баз происходит при нажатии на кнопки Apply и Reset.
Да, так и работает. Синхронизация может быть разной. В данном случае Apply - это скорее новая полная закачка, т.к. крутить колёсико - это просто обновление ListBox после подкачки изменённой строки.
Это же просто демонстрация, обсуждать можно технологию и вряд ли больше )))
Дед Пахом писал(а): 12 Ноябрь 2018, 22:53Если не верите, то тут пример.
Если нет исходников, то хотя бы откуда пример? А то скучно :nr: всухую

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 15 Ноябрь 2018, 1:11
Developer
arlean1 писал(а): 15 Ноябрь 2018, 0:29Если нет исходников, то хотя бы откуда пример? )))
https://clarionhub.com/t/sql-access-to- ... river/2228
We magicians do not reveal our secrets - фокусники не раскрывают секреты :mrgreen:

Михаил молодец!!! Этот пример и есть фокус :D

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 15 Ноябрь 2018, 11:38
kreator
RaFaeL писал(а): 14 Ноябрь 2018, 23:03 Смысл например может быть такой: у нас основное (коммерческое) приложение на MS SQL, плюс есть бесплатная однопользовательская демо-версия на TPS. Местами код пишется два раза - для SQL запросы, для TPS по старинке. Наверное, решение позволило бы этого избежать. Правда, у нас еще куча хранимок, х.з. как тут с этим, не вникал
Притянутый за уши пример. Сейчас не начало 2000-х. Однопользовательская версия может быть сразу на sqlite. TPS-то зачем? Вот у нас есть "мобильный" модуль. Да, немного неудобно, нужно установить на планшет FB (Firebird). SQLite был бы легче. Но возможности SQLite несравнимы с FB. И синтаксис, и хранимки, и триггеры.
Подозреваю, ДП знает больше, чем я, например. На выходе обещанная SV поддержка REACT. Предложен лёгкий способ переноса приложений с tps (а это во многих случаях однопользовательские системы) в мобильную среду. Возможно как временное решение. В общем, размечтался что-то я :mrgreen: .

Доступ к базе TPS через SQL (без ODBC драйвера)

Добавлено: 15 Ноябрь 2018, 12:18
finsoftrz
Дедушка ищет, чтобы еще такого впарить буржуям... :-)
Как идея прикольно, но в моих проектах точно такое не нужно. У кого-то, возможно, в генераторах отчетов может быть задействована. Не обязательно загонять в sqlite всю базу. Можно какую-то начальную выборку (документы за период и записи из справочников по ссылкам, к примеру), а затем к ней применить дополнительную фильтрацию и сортировку на sql, сохраненную в настройках отчета. Как-то так...