Найдено 5 результатов
- Чт 25 янв 2018 19:38
- Форум: MySQL Data Access Components
- Тема: Транзакции в MyDac
- Ответы: 5
- Просмотры: 19319
Re: Транзакции в MyDac
Благодарю!
- Ср 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, но это, скорее, силовое решение в лоб. Есть ли более изящные методы решения данной проблемы?
После старта транзакции (кнопка Start) меняем в какой нибудь ячейке данные. Если потом на другие строки таблицы не переходим (!), нажимаем последовательно кнопки Rollback и DBNaviganor.Refresh, то метод Rollback не срабатывает.
Для того, чтобы он сработал, после изменения в ячейке надо либо перейти на другую строку таблицы (тогда нажатие на Rollback + DBNaviganor.Refresh сработает), либо нажать следующую комбинацию:
DBNaviganor.Refresh - кнопка Rollback - DBNaviganor.Refresh
В принципе, можно использовать в программе комбинацию tmyquery.Refresh - MyConnection1.Rollback - tmyquery.Refresh, но это, скорее, силовое решение в лоб. Есть ли более изящные методы решения данной проблемы?
- Вт 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', []); также не работает - нет отмены транзакции.
Перечитал практически весь форум, перепробовал предлагаемые варианты, решения моего вопроса не нашел. Подскажите, как правильно работать с транзакциями, может чего пропустил.
Работаю в 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', []); также не работает - нет отмены транзакции.
Перечитал практически весь форум, перепробовал предлагаемые варианты, решения моего вопроса не нашел. Подскажите, как правильно работать с транзакциями, может чего пропустил.
- Вт 23 янв 2018 05:21
- Форум: MySQL Data Access Components
- Тема: Транзакции в MyQuery
- Ответы: 11
- Просмотры: 26349
Re: Транзакции в MyQuery
вопрос перенес в новую тему
- Вс 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', []); также не работает - нет отмены транзакции.
Перечитал практически весь форум, перепробовал предлагаемые варианты, решения моего вопроса не нашел. Подскажите, как идет работа с транзакциями, может чего пропустил.
Работаю в 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', []); также не работает - нет отмены транзакции.
Перечитал практически весь форум, перепробовал предлагаемые варианты, решения моего вопроса не нашел. Подскажите, как идет работа с транзакциями, может чего пропустил.