Помірний: потребує базових макросів, кодування та навичок сумісності.Ця стаття стосується бази даних Microsoft Access (MDB) і проекту Microsoft Access (. adp).
Ознаки
Під час редагування даних, який використовує кілька форм з одного джерела записів, може з'явитися таке повідомлення про помилку:
Цей запис змінено іншим користувачем після початку редагування. Якщо зберегти запис, буде перезаписано зміни, внесені іншим користувачем. Копіювання змін до буфера обміну дозволить вам поглянути на значення, введені іншим користувачем, а потім вставити зміни назад, якщо ви вирішите внести зміни.
Потім ви можете натиснути одну з наступних трьох кнопок:
-
Зберегти запис
-
Скопіювати в буфер обміну
-
Скинути зміни
Причина
Ця проблема виникає, під час відкриття двох форм, які оновлення ж джерела даних, у той же час. Перша форма ставить блокування на редагування запису або записів, а потім друга форма змінює запис або записи та зберігає зміни. Коли перша форма намагається закрити і записати назад до таблиці, виявлені зміни, внесені другою формою. Це призводить до повідомлення про помилку буде повернуто.
Спосіб вирішення
Щоб вирішити цю проблему, скористайтеся будь-яким із двох способів, перелічених у файлі бази даних Microsoft Access (MDB) або метод, зазначений у файлі проекту Access (. adp).
Для файлу бази даних Microsoft Access (MDB)
Способу 1
Установлення властивості " блокування записів " форми для редагованого запису. Щоб зробити це, виконайте такі дії:
-
Відкрийте форму в поданні конструктора. Зверніть увагу У Access 2007 перейдіть до кроку 3.
-
У меню вигляд виберіть пункт Властивості.
-
На вкладці дані змініть властивість записування замків на редагований запис.
Спосіб 2
Додайте код до процедури OnDeactivate подію обох форм, щоб зберегти запис. Щоб зробити це, виконайте такі дії:
-
Відкрийте форму в поданні конструктора. Зверніть увагу У Access 2007 перейдіть до кроку 4.
-
У меню вигляд виберіть пункт Властивості.
-
У меню Правка виберіть команду Вибрати форму.
-
На вкладці події клацніть правою кнопкою миші у полі властивості ondeactivate і виберіть команду створити.
-
У полі вибрати Побудовник виберіть пункт Побудовник коду, а потім натисніть кнопку ОК.
-
Введіть або вставте наступний код:
DoCmd.RunCommand acCmdSaveRecord
-
Відкрийте другу форму в поданні конструктора і повторіть кроки 2 – 6.
Для файлу проекту Microsoft Access (. adp):
Додайте код до процедури OnDeactivate і Ondeactivate події обох форм для збереження запису. Щоб зробити це, виконайте такі дії:
-
Відкрийте форму в поданні конструктора. Зверніть увагу У Access 2007 перейдіть до кроку 4.
-
У меню вигляд виберіть пункт Властивості.
-
У меню Правка виберіть команду Вибрати форму.
-
На вкладці події клацніть правою кнопкою миші у полі властивості ondeactivate і виберіть команду створити.
-
У полі вибрати Побудовник виберіть пункт Побудовник коду, а потім натисніть кнопку ОК.
-
Введіть або вставте наступний код:
DoCmd.RunCommand acCmdSaveRecord
-
У меню " файл " натисніть кнопку закрити і повернутися до Microsoft Access.
-
На вкладці " подія " клацніть правою кнопкою миші у полі властивості onактивуі натисніть кнопку створити.
-
У полі вибрати Побудовник виберіть пункт Побудовник коду, а потім натисніть кнопку ОК.
-
Введіть або вставте наступний код:Примітка у зразку коду в цій статті використовуються об'єкти даних ActiveX Microsoft. Щоб цей код запускався належним чином, потрібно посилатися на об'єкт даних Microsoft ActiveX Data 2. x бібліотеки (де 2. x – 2,1 або пізнішої версії). Для цього натисніть кнопку " посилання " у меню " Знаряддя " у редакторі Visual Basic і переконайтеся, що встановлено прапорець поруч із пунктом дані об'єктів даних Microsoft ActiveX для бібліотеки 2. x .
Dim rs As ADODB.RecordsetSet rs = Me.Recordset.Cloners.Bookmark = Me.BookmarkDoCmd.RunCommand acCmdRefreshMe.Bookmark = rs.Bookmarkrs.CloseSet rs = Nothing
-
Відкрийте другу форму в поданні конструктора, а потім повторіть кроки 2 – 10.
Додаткові відомості
Дії, щоб відтворити поведінку в Access 2003
-
Відкритий доступ.
-
У меню Довідка виберіть пункт зразкові бази даних, а потім – зразок бази даних "Борей".
-
У вікні бази даних клацніть таблиці в розділі об'єкти, а потім клацніть таблицю « працівники ».
-
У меню Вставка виберіть команду Автоформа.
-
Збережіть форму у вигляді співробітників Frmnewemployees
-
Відкрийте форму працівників, а потім змініть поле ім'я на Nancy1.
-
Відкрийте форму frmNewEmployees, а потім змініть поле ім'я на Nancy2.
-
Закрийте форму frmNewEmployees.
-
Закрийте форму працівників. Зверніть увагу, що з'являється повідомлення "запис конфлікт", описане в розділі "ознаки" цієї статті.
Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft Knowledge Base:
304181 несподіване записування, конфлікт помилка під час закриття форми
280730 ACC2000: Помилка записування конфлікту під час спроби оновлення записів у зв'язаній таблиці SQL Server