Помірний: потребує базових макросів, кодування та навичок сумісності.Ця стаття стосується бази даних Microsoft Access (MDB) і проекту Microsoft Access (. adp).

Ознаки

Під час редагування даних, який використовує кілька форм з одного джерела записів, може з'явитися таке повідомлення про помилку:

Цей запис змінено іншим користувачем після початку редагування. Якщо зберегти запис, буде перезаписано зміни, внесені іншим користувачем. Копіювання змін до буфера обміну дозволить вам поглянути на значення, введені іншим користувачем, а потім вставити зміни назад, якщо ви вирішите внести зміни.

Потім ви можете натиснути одну з наступних трьох кнопок:

  • Зберегти запис

  • Скопіювати в буфер обміну

  • Скинути зміни

Причина

Ця проблема виникає, під час відкриття двох форм, які оновлення ж джерела даних, у той же час. Перша форма ставить блокування на редагування запису або записів, а потім друга форма змінює запис або записи та зберігає зміни. Коли перша форма намагається закрити і записати назад до таблиці, виявлені зміни, внесені другою формою. Це призводить до повідомлення про помилку буде повернуто.

Спосіб вирішення

Щоб вирішити цю проблему, скористайтеся будь-яким із двох способів, перелічених у файлі бази даних Microsoft Access (MDB) або метод, зазначений у файлі проекту Access (. adp).

Для файлу бази даних Microsoft Access (MDB)

Способу 1

Установлення властивості " блокування записів " форми для редагованого запису. Щоб зробити це, виконайте такі дії:

  1. Відкрийте форму в поданні конструктора. Зверніть увагу У Access 2007 перейдіть до кроку 3.

  2. У меню вигляд виберіть пункт Властивості.

  3. На вкладці дані змініть властивість записування замків на редагований запис.

Спосіб 2

Додайте код до процедури OnDeactivate подію обох форм, щоб зберегти запис. Щоб зробити це, виконайте такі дії:

  1. Відкрийте форму в поданні конструктора. Зверніть увагу У Access 2007 перейдіть до кроку 4.

  2. У меню вигляд виберіть пункт Властивості.

  3. У меню Правка виберіть команду Вибрати форму.

  4. На вкладці події клацніть правою кнопкою миші у полі властивості ondeactivate і виберіть команду створити.

  5. У полі вибрати Побудовник виберіть пункт Побудовник коду, а потім натисніть кнопку ОК.

  6. Введіть або вставте наступний код:

    DoCmd.RunCommand acCmdSaveRecord
  7. Відкрийте другу форму в поданні конструктора і повторіть кроки 2 – 6.

Для файлу проекту Microsoft Access (. adp):

Додайте код до процедури OnDeactivate і Ondeactivate події обох форм для збереження запису. Щоб зробити це, виконайте такі дії:

  1. Відкрийте форму в поданні конструктора. Зверніть увагу У Access 2007 перейдіть до кроку 4.

  2. У меню вигляд виберіть пункт Властивості.

  3. У меню Правка виберіть команду Вибрати форму.

  4. На вкладці події клацніть правою кнопкою миші у полі властивості ondeactivate і виберіть команду створити.

  5. У полі вибрати Побудовник виберіть пункт Побудовник коду, а потім натисніть кнопку ОК.

  6. Введіть або вставте наступний код:

    DoCmd.RunCommand acCmdSaveRecord
  7. У меню " файл " натисніть кнопку закрити і повернутися до Microsoft Access.

  8. На вкладці " подія " клацніть правою кнопкою миші у полі властивості onактивуі натисніть кнопку створити.

  9. У полі вибрати Побудовник виберіть пункт Побудовник коду, а потім натисніть кнопку ОК.

  10. Введіть або вставте наступний код:Примітка у зразку коду в цій статті використовуються об'єкти даних 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
  11. Відкрийте другу форму в поданні конструктора, а потім повторіть кроки 2 – 10.

Додаткові відомості

Дії, щоб відтворити поведінку в Access 2003

  1. Відкритий доступ.

  2. У меню Довідка виберіть пункт зразкові бази даних, а потім – зразок бази даних "Борей".

  3. У вікні бази даних клацніть таблиці в розділі об'єкти, а потім клацніть таблицю « працівники ».

  4. У меню Вставка виберіть команду Автоформа.

  5. Збережіть форму у вигляді співробітників Frmnewemployees

  6. Відкрийте форму працівників, а потім змініть поле ім'я на Nancy1.

  7. Відкрийте форму frmNewEmployees, а потім змініть поле ім'я на Nancy2.

  8. Закрийте форму frmNewEmployees.

  9. Закрийте форму працівників. Зверніть увагу, що з'являється повідомлення "запис конфлікт", описане в розділі "ознаки" цієї статті.

Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft Knowledge Base:

304181 несподіване записування, конфлікт помилка під час закриття форми

280730 ACC2000: Помилка записування конфлікту під час спроби оновлення записів у зв'язаній таблиці SQL Server

Потрібна додаткова довідка?

Отримуйте нові функції раніше за інших
Приєднатися до Microsoft оцінювачів

Чи були ці відомості корисні?

Наскільки ви задоволені якістю перекладу?
Що вплинуло на ваші враження?

Дякуємо за ваш відгук!

×