Update Failed. Found 0 Records и Strict Update

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
denzay.dp
Сообщения: 10
Зарегистрирован: Пт 11 апр 2014 15:14

Update Failed. Found 0 Records и Strict Update

Сообщение denzay.dp » Ср 05 апр 2017 11:03

Добрый день.

Столкнулся с проблемой:
При работе периодически наблюдается ошибка Update Failed. Found 0 Records
но дело не в том, что в этот момент какой-то другой из пользователей поменял текущую запись.
Эта ошибка, возникнув в приложении один раз, продолжает появляться абсолютно во всех UniTable в приложении. Не помогает ни Refresh ни даже переоткрытие UniTable. Ошибка возникает при любой операции изменения данных (вставки, редактировании, удалении)
В UniTable включена опция RefreshBeforeEdit В профайлере я вижу запрос, который формирует Юнидак перед редактированием записи таблицы (лочит запись, согласно опции RefreshBeforeEdit)
Запрос формируется верно, по полям PK таблицы и по условиям этого запроса возвращается одна запись из таблицы (RowsAffected внитри Юнидака должен быть = 1).

Воспроизвести ситуацию на тестовом проекте не удается. Можно смоделировать только ошибку, если в момент редактирования записи первым пользователем, второй её удалит. Первый попытается сохранить и получит ошибку. Но после обновления источника первый пользователь сможет продолжить работу с приложением.

В мануале Юнидака написано, что эту опцию рекомендуется отключать, если на таблице висят триггеры. Триггеры на таблице есть, но операции над сохраняемой записью они не производят. Если бы триггер здесь влиял, ошибка бы проявлялась на конкретной таблице. А так, раз возникнув, она продолжает возникать абсолютно на всех UniTable, пока не перезапустить приложение.

Если отключить опцию StrictUpdate, на что еще это может повлиять, кроме того, как перед выполнением запроса на редактирование записи, Юнидак будет проверять, что редактируется действительно одна текущая запись?
Окружение Delphi 10.1 Berlin, UniDAC 6.4.14

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Update Failed. Found 0 Records и Strict Update

Сообщение AndreyZ » Вт 18 июл 2017 14:18

Мы не можем знать, как поведет себя пользовательский код при отключении опции StrictUpdate, кроме случаев, описанных в документации: https://www.devart.com/unidac/docs/?dev ... update.htm .

Все-таки, постарайтесь составить тестовый пример, т.к. для исследования указанной проблемы нам необходимо ее воспроизвести у себя.

skameykin
Сообщения: 1
Зарегистрирован: Ср 02 авг 2017 11:58
Контактная информация:

Re: Update Failed. Found 0 Records и Strict Update

Сообщение skameykin » Ср 02 авг 2017 12:43

И как работает сейчас?

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Update Failed. Found 0 Records и Strict Update

Сообщение AndreyZ » Пн 23 окт 2017 08:28

Пожалуйста, опишите более подробно ваш вопрос. Если у вас небольшой тестовый пример, который его демонстрирует, пожалуйста, пришлите его нам.

Ответить