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

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 27 Август 2020, 9:47
gopstop2007
Есть шесть таблиц:
Первые три, назовем - InvoiceOrig

Код: Выделить всё

InvoiceTPS   - одна запись, "шапка" накладной (TPS формат)
InvDetailTPS - много записей, список товара по этой накладной  (TPS формат)
CashTPS - одна запись, оплата по этой накладной   (TPS формат)
и копии этих трех таблиц только для другого формата (ODBC) назовем - InvoiceCopy

Код: Выделить всё

InvoiceSQL   - одна запись, "шапка" накладной  ODBC (Mysql)
InvDetailSQL - много записей, список товара по этой накладной    ODBC (Mysql)
CashSQL - одна запись, оплата по этой накладной  (Mysql)
Нужно регулярно копировать из InvoiceOrig на сервер в InvoiceCopy, при этом если возникли проблемы с отправкой, записью на сервер, откат всех задействованных таблиц, файлов.
Есть несколько вариантов выполнения, с помощью:
1. LOGOUT
2. START TRANSACTION

Так как мой опыт сравнительно небольшой, какой из вариантов для моей ситуации предпочтительней?
Интересно мнение кто регулярно сталкивается с данным вопросом и есть положительный опыт.
Если есть у кого то готовые решения, реально работающие - код, шаблоны и т.п., готов оговорить условия покупки.

Спасибо за внимание.
В Mysql используется InnoDB, С10 ABC

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 28 Август 2020, 15:50
Yufil
1. Когда я последний раз пользовал кларионовский Logout-Commit в MS SQL, выдал трассировку выполнения.
Сколь велико было моё удивление, когда я увидел, что оба этих оператора не делают ровным счётом ничего.
Возможно, я не на те пимпочки ткнул. В Мануале сказано, что всё зависит от драйвера и базы данных

Так что, конечно, Start Transaction.

2. Для простой работы с SQL базы данных из Клариона пользуюсь самопальной процедурой LoadQueueFromSQL.
Она требует добавления в базу данных пустой фиктивной таблицы с одним полем, после чего достаточно комфортно
работать в Кларионе с базами данных без словаря.

Можно поискать по волшебному слову LoadQueueFromSQL и качнуть пример
с https://mega.nz/file/JhQGBAyJ#sPfsQM-cI ... bDU8jEyoHA

3. Что проще Клариона для работы с базами данных. Только Python :D. Приду домой, обновлю папку
в файлохранилище форума

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 31 Август 2020, 16:28
kreator
Я бы сделал по другому. Если есть проблема с коннектом, то можно рассмотреть такой вариант. На клиенте создавать текстовый файл скрипта, потом этот файл перекинуть на сервер и там его выполнить. Я что-то подобное делаю, только в обратном направлении.

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 31 Август 2020, 17:49
gopstop2007
Yufil писал(а): 28 Август 2020, 15:50 1. Когда я последний раз пользовал кларионовский Logout-Commit в MS SQL, выдал трассировку выполнения.
Сколь велико было моё удивление, когда я увидел, что оба этих оператора не делают ровным счётом ничего.
Возможно, я не на те пимпочки ткнул. В Мануале сказано, что всё зависит от драйвера и базы данных

Так что, конечно, Start Transaction.

2. Для простой работы с SQL базы данных из Клариона пользуюсь самопальной процедурой LoadQueueFromSQL.
Она требует добавления в базу данных пустой фиктивной таблицы с одним полем, после чего достаточно комфортно
работать в Кларионе с базами данных без словаря.

Можно поискать по волшебному слову LoadQueueFromSQL и качнуть пример
с https://mega.nz/file/JhQGBAyJ#sPfsQM-cI ... bDU8jEyoHA

3. Что проще Клариона для работы с базами данных. Только Python :D. Приду домой, обновлю папку
в файлохранилище форума
Спасибо Yufil. Насчет LoadQueueFromSQL, спасибо Вам давно пользуюсь, даже увеличил с 10 до 15 параметров :)
kreator писал(а): 31 Август 2020, 16:28 Я бы сделал по другому. Если есть проблема с коннектом, то можно рассмотреть такой вариант. На клиенте создавать текстовый файл скрипта, потом этот файл перекинуть на сервер и там его выполнить. Я что-то подобное делаю, только в обратном направлении.
так делал с 2012 года если не ошибаюсь, с помощью команды LOAD DATA LOCAL INFILE, но не то... :(

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 31 Август 2020, 18:41
Yufil
Всё-таки, глянь Python, там всё необходимое легко доступно. И вреда никакого, кроме пользы.

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 31 Август 2020, 20:47
gopstop2007
Yufil писал(а): 31 Август 2020, 18:41 Всё-таки, глянь Python, там всё необходимое легко доступно. И вреда никакого, кроме пользы.
спасибо, глянуть это понятно, для меня с непривычки или незнания, как связать это с кларионом? :)

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 02 Сентябрь 2020, 11:31
Yufil
Ну, как... собрать исполняемый файл и запустить :D. Или наладить прямой запуск скриптов из программы

У меня конвертор обучающих программ состоит из Windows-приложения на Кларион ( копируются и экспортируются необходимые файлы ( tps->image, tps->XML ). и Python-приложения, выполняющего преобразование ( Парсинг внутренних скриптов -> javascript, преобразование XML-> HTML, CSS, JavaScript ), всё это дело после копирования собирается в SCORM-пакет.

Лет десять назад для этой делал интерфейс с Кларионом, но оказалось неудобно ( Отладка, работа с Unicode, сборка приложений). Проще из Клариона запустить python, чтобы он исполнил скрипт.

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 02 Сентябрь 2020, 17:23
gopstop2007
Интересно, у меня есть когда работает по отдельности, но чтобы в связке, такого нет. Если возможно, хоть какой то пример как это связывается, сам симбиоз этого всего :)

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 02 Сентябрь 2020, 19:27
Yufil
Я собираю exe-файл с помощью пакета pyinstaller, кларионовская программа может вызвать его командой Run или ShellExecute и передать ей набор параметров ( сейчас около десятка) . Питоновская программа разбирает параметры с помощью либ argparse или click.

Дальше весь комплект необходимых файлов ( кларионовские exe и dll, исполняемый файл с рантаймом Питона и ещё несколько утилит :) копирую в одну папку и с помощью Enigma Virtual Box https://enigmaprotector.com/ru/aboutvb.html делаю портативку. включающую все необходимые рантаймы. Всё, естественно, просто запуском батничка

Код: Выделить всё

set .... 
........ 
pyinstaller -y --onefile --windowed --name=hdump2 "d:\Fil\Tutor\PYHS\main.py"
rem Копирую всякие программы ( exe - dll - ocx - json ... )
xcopy ... 
copy cla*.dll . 
copy hdump.exe .
.......... 
rem httptwisted - миниатюрный web сервер на Python, он тоже нужен 
copy twisted%\htttptwisted.exe . 
rem А ещё нужно 7z 
copy "%z7%\lang\ru.txt" .\lang\
copy "%z7%\7*.exe" .
copy "%z7%\7*.dll" .
rem А ещё нужно ffmpeg.exe для преобразования видео 
copy "%pyhs%\ffmpeg.exe" . 
.... 
rem пускаем энигму 
enigmavbconsole hdump.evb
rem и запускаем порташку 
hdump_packed.exe 
pause

Mysql ODBC - LOGOUT vs START TRANSACTION

Добавлено: 03 Сентябрь 2020, 16:40
gopstop2007
спасибо большое, собирать ру в ехе, упустил этот момент :)