Страница 1 из 1

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

Добавлено: Ср 10 июл 2019 13:51
Akella
У 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 отключен.

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

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

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

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

Добавлено: Чт 11 июл 2019 13:07
Akella
А так и должно быть, что свойство SpecificOptions пустое?

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

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

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

Добавлено: Пт 12 июл 2019 06:27
ViktorV
Свойство SpecificOption будет содержать название и значение опций, которые имеют значения отличные от дефолтных, как в дизайнтайеме так и в рантайме.