DXE2, MySQL 5.1.62-cll, UniDAC 4.6.1
Не могу понять, как правильно работать с транзакциями у UniDAC.
при открытии формы:
Код: Выделить всё
//qDatas - это TUniQuery
qDatas.ParamByName('id_ads').AsInteger := id_ad;
qDatas.UpdateTransaction.StartTransaction;
qDatas.Open;
// после OPEN пробовал
// qDatas.UpdateTransaction.StartTransaction;
изменяю данные в таблице (прямо в гриде)
На кнопку Отмена повешен код
Код: Выделить всё
qDatas.UpdateTransaction.Rollback;
Нажимаю кнопку Отмена, но данные в таблице меняются, хоть я и вызвал Rollback.
Добавлю.
Эта транзакция (qDatas.UpdateTransaction) лежит отдельно от двух других на форме добавления данных, там же лежит и qDatas.
Т.е. есть как обычно 2 транзакции в датамодуле для Connection.
А есть третья, специально для qDatas.UpdateTransaction.
Форма добавления/редактирования модальная.
Соответственно, компонента TUniTransaction создается и уничтожается при создании и закрытии формы, как и сам набор данных qDatas (TUniQuery).
Транзакция qDatas.UpdateTransaction ни к чему больше не привязана. Только TUniConnection и TUniQuery.