AutoCommit у TUniQuery не работает

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
Akella
Сообщения: 155
Зарегистрирован: Пн 02 апр 2012 14:41

AutoCommit у TUniQuery не работает

Сообщение Akella » Ср 10 июл 2019 13:51

У TUniQuery включен AutoCommit. А у TUniConnection - отключен.
У TUniQuery все SQL заполнены. Свойство UpdatingTable заполнено.
SQL

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

SELECT 
  MP.ID,
  MP.PARENT,
  MP.PNAME,
  MP.PTYPE,
  MP.PVAL,
  MP.IMAGEINDEX,
  MP.STATEINDEX,
  MP.TTELEGRAMUSERS_ID 
FROM TTELEGRAMMAILINGPARAM MP
SQLUpdate:

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

UPDATE TTELEGRAMMAILINGPARAM
SET
  ID = :ID, PARENT = :PARENT, TTELEGRAMUSERS_ID = :TTELEGRAMUSERS_ID, PNAME = :PNAME, PTYPE = :PTYPE, PVAL = :PVAL, IMAGEINDEX = :IMAGEINDEX, STATEINDEX = :STATEINDEX
WHERE
  ID = :Old_ID
Меняю в сетке значение какого-нибудь поля. Вижу, что изменилось, но после переоткрытия набора данных всё равно старое значение.
Обновление проходит без ошибок.
У TUniQuery 2 транзации: пишущая и читающая. Параметры пишущей: write;nowait;rec_version;read_committed, свойство IdolationLavel установлено в ilCustom.

Нужно, чтобы только у нескольких TUniQuery работал механизм AutoCommit, поэтому у TUniConnection AutoCommit отключен.

Что я ещё забыл?

ViktorV
Devart Team
Сообщения: 190
Зарегистрирован: Чт 31 июл 2014 09:52

Re: AutoCommit у TUniQuery не работает

Сообщение ViktorV » Ср 10 июл 2019 14:10

У свойства TUniConnection.AutoCommit более высокий приоритет, чем у опции "AutoCommit" для наборов данных(TUniQuery, TUniTable). Если свойство TUniConnection.AutoCommit имеет значение False, транзакции могут быть совершены только явно (несмотря на значение опции "AutoCommit" для наборов данных).
Если бы хотите совершать транзакции автоматически для большинства наборов данных, а для отдельных наборов данных - вручную, установите значение True для свойства TUniConnection.AutoCommit. Для ручного управлениях транзакциями, установите значение False для опции "AutoCommit" для нужных наборов данных.

Akella
Сообщения: 155
Зарегистрирован: Пн 02 апр 2012 14:41

Re: AutoCommit у TUniQuery не работает

Сообщение Akella » Чт 11 июл 2019 13:07

А так и должно быть, что свойство SpecificOptions пустое?

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

  qQueryValue := TUniQuery.Create(connNotify);
  qQueryValue.Connection := connNotify;
  qQueryValue.Transaction := transR;
  qQueryValue.UpdateTransaction := transW;
  ShowMessage(qQueryValue.SpecificOptions.Text);
При этом, если компонент "создан" визуально (кинут в DataModule), то там SpecificOptions не пустое

ViktorV
Devart Team
Сообщения: 190
Зарегистрирован: Чт 31 июл 2014 09:52

Re: AutoCommit у TUniQuery не работает

Сообщение ViktorV » Пт 12 июл 2019 06:27

Свойство SpecificOption будет содержать название и значение опций, которые имеют значения отличные от дефолтных, как в дизайнтайеме так и в рантайме.

Ответить