Найдено 5 результатов

Goris
Чт 25 янв 2018 19:38
Форум: MySQL Data Access Components
Тема: Транзакции в MyDac
Ответы: 5
Просмотры: 19319

Re: Транзакции в MyDac

Благодарю!
Goris
Ср 24 янв 2018 00:38
Форум: MySQL Data Access Components
Тема: Транзакции в MyDac
Ответы: 5
Просмотры: 19319

Re: Транзакции в MyDac

С помощью MyDacDemo демо проекта (Transactions) удалось локализовать место сбоя.
После старта транзакции (кнопка Start) меняем в какой нибудь ячейке данные. Если потом на другие строки таблицы не переходим (!), нажимаем последовательно кнопки Rollback и DBNaviganor.Refresh, то метод Rollback не срабатывает.
Для того, чтобы он сработал, после изменения в ячейке надо либо перейти на другую строку таблицы (тогда нажатие на Rollback + DBNaviganor.Refresh сработает), либо нажать следующую комбинацию:
DBNaviganor.Refresh - кнопка Rollback - DBNaviganor.Refresh
В принципе, можно использовать в программе комбинацию tmyquery.Refresh - MyConnection1.Rollback - tmyquery.Refresh, но это, скорее, силовое решение в лоб. Есть ли более изящные методы решения данной проблемы?
Goris
Вт 23 янв 2018 05:23
Форум: MySQL Data Access Components
Тема: Транзакции в MyDac
Ответы: 5
Просмотры: 19319

Транзакции в MyDac

Здравствуйте!
Работаю в Delphi 7, установлен MyDAC 7.1.6.

Есть tDBGridEh, связанный с tDataSource-tMyQuery-tMyConnection
Таблица в БД MySQL типа InnoDB. Свойство MyQuery.FetchAll=true.

При создании формы ставлю MyConnection1.StartTransaction
В DBGridEh редактирую данные, потом жму на соответствующую кнопку для MyConnection1.Commit либо MyConnection1.Rollback.
Выяснилось, что в любом случае происходит запись данных в таблицу, Rollback не срабатывает, ошибок при этом не возникает. Насчет работы Commit ничего не могу сказать, т.к. запись происходит как при его наличии, так и при его отсутствии.
Попытка писать через MyConnection.ExecSQL('set autocommit = 0', []); и MyConnection.ExecSQL('rollback', []); также не работает - нет отмены транзакции.

Перечитал практически весь форум, перепробовал предлагаемые варианты, решения моего вопроса не нашел. Подскажите, как правильно работать с транзакциями, может чего пропустил.
Goris
Вт 23 янв 2018 05:21
Форум: MySQL Data Access Components
Тема: Транзакции в MyQuery
Ответы: 11
Просмотры: 26349

Re: Транзакции в MyQuery

вопрос перенес в новую тему
Goris
Вс 21 янв 2018 23:32
Форум: MySQL Data Access Components
Тема: Транзакции в MyQuery
Ответы: 11
Просмотры: 26349

Re: Транзакции в MyQuery

Здравствуйте!
Работаю в Delphi 7, установлен MyDAC 7.1.6.

Есть tDBGridEh, связанный с tDataSource-tMyQuery-tMyConnection
Таблица в БД MySQL типа InnoDB. Свойство MyQuery.FetchAll=true.

При создании формы ставлю MyConnection1.StartTransaction
В DBGridEh редактирую данные, потом жму на соответствующую кнопку для MyConnection1.Commit либо MyConnection1.Rollback.
Выяснилось, что в любом случае происходит запись данных в таблицу, Rollback не срабатывает, ошибок при этом не возникает. Насчет работы Commit ничего не могу сказать, т.к. запись происходит как при его наличии, так и при его отсутствии.
Попытка писать через MyConnection.ExecSQL('set autocommit = 0', []); и MyConnection.ExecSQL('rollback', []); также не работает - нет отмены транзакции.

Перечитал практически весь форум, перепробовал предлагаемые варианты, решения моего вопроса не нашел. Подскажите, как идет работа с транзакциями, может чего пропустил.