Mysql ODBC - LOGOUT vs START TRANSACTION

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение 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
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение Yufil »

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

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

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

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

3. Что проще Клариона для работы с базами данных. Только Python :D. Приду домой, обновлю папку
в файлохранилище форума
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение kreator »

Я бы сделал по другому. Если есть проблема с коннектом, то можно рассмотреть такой вариант. На клиенте создавать текстовый файл скрипта, потом этот файл перекинуть на сервер и там его выполнить. Я что-то подобное делаю, только в обратном направлении.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение 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, но не то... :(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение Yufil »

Всё-таки, глянь Python, там всё необходимое легко доступно. И вреда никакого, кроме пользы.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение gopstop2007 »

Yufil писал(а): 31 Август 2020, 18:41 Всё-таки, глянь Python, там всё необходимое легко доступно. И вреда никакого, кроме пользы.
спасибо, глянуть это понятно, для меня с непривычки или незнания, как связать это с кларионом? :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение Yufil »

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

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

Лет десять назад для этой делал интерфейс с Кларионом, но оказалось неудобно ( Отладка, работа с Unicode, сборка приложений). Проще из Клариона запустить python, чтобы он исполнил скрипт.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение gopstop2007 »

Интересно, у меня есть когда работает по отдельности, но чтобы в связке, такого нет. Если возможно, хоть какой то пример как это связывается, сам симбиоз этого всего :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение 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
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Mysql ODBC - LOGOUT vs START TRANSACTION

Сообщение gopstop2007 »

спасибо большое, собирать ру в ехе, упустил этот момент :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить