Проблема блокировки записей связанных таблиц в SQL Server и Access, ошибка Пока вы правили эту запись, она была изменена другим пользователем


12.05.2012 || Раздел: || Windows || MS SQL Server


В этой небольшой статье я попытаюсь описать одну из причин возникновения ошибки "Пока вы правили эту запись, она была изменена другим пользователем..." (This record has been changed by another user since you started editing it.) при работе со связанными таблицами SQL Server и Access во время сохранения и редактирования записей.

У меня была следующая задача - нужная база данных расположена на одном из SQL-серверов сети (SQL Server). Самый простой способ создания интерфейса для пользователей по заполнению это БД - это нарисовать формы в Access.

Для этого я связываю таблицы из базы SQL Server с таблицами в Access, т.е. создаю связные таблицы.

Но при попытке внести данные в одну из таблиц у меня возникала эта ошибка и сохранения не происходило, хотя я точно знала, что в данный момент я работала с базой одна.

Проблема оказалась в следующем. Эта таблица содержала поле типа bit (boolean) и стоило мне изменить его, скажем на char(1), как ошибка пропала. На уровне связи SQLServer-Access возникала блокировка, которая не позволяла произвести сохранение изменений в записи.

Проблема возникает, если в таблице уже есть данные и в этом логическом поле установлено знание NULL. Access не может это значение изменить.

Поэтому лучшим решением будет перейти в SQL Server и обновить в таблице все содержащие NULL поля на значение по умолчанию, например, на 0, можете через запрос UPDATE (если строк много). Также в дизайнере таблице снимите разрешение "Допускать Null" (Allow Nulls) с поля bit.

Подробнее см. - support.microsoft.com/en-us/kb/280730

(с) Ella S.

< Предыдущая статья

Видеоурок: создание динамических страниц на основе папок содержимого

Следующая статья >

Плагины KooBoo. Плагин ReCaptcha Validator. Часть 3. Использование в форме обратной связи - feedback, contact us


Комментарии

Комментировать с помощью "FaceBook"

Комментировать с помощью "вКонтакте"