Перевірка дублювання значень первинного ключа
Зазвичай перевірка дублювання значень первинного ключа визначається на рівні таблиці, тобто коли ви визначили поле в таблиці як первинний ключ, значення властивостіІндексоване поле(Indexed) автоматично встановлюється рівним Yes (No Duplicates) — Так (Збіги не допускаються). Однак ця перевірка виконується лише тоді, коли запис зберігається у базі даних. Якщо значення ключового поля вводиться у формі користувачем, наприклад, у таблиці "Клієнти" (Customers), то цю перевірку краще виконати відразу після введення даних у це поле. Найбільш підходящою подією для цього є подіяДо зміни(Before Update). У формі "Клієнти" (Customers) елемент керування "КодКлієнта (CustomerID) містить ідентифікатор клієнта. ПодіяДо зміни(Before Update) цього поля обробляється за допомогою макросу "Клієнти" (Customers.ValidateID), який виконує необхідну перевірку Ми покажемо, як можна обробити цю подію за допомогою процедури VBA.Ця процедура може дивитися таким чином.
Пошук запису зі значенням ключа, що збігається з введеним значенням поля "КодКлієнта" (CustomerlD), виконується за допомогою методу Seek об'єкта Recordset. Цей метод забезпечує швидкий пошук потрібного запису. Застосувати його можна лише до набору записів табличного типу, тому під час створення цього набору записів використовується внутрішня константа dbOpenTable. Якщо такий запис знайдено, властивість NoMatch об'єкта Recordset набуває значення False. У цьому випадку процедура виведе повідомлення, що такий користувач вже існує і надасть значення True аргументу Cancel. Це дозволяє скасувати оновлення значення елемента керування. Якщо значення властивості NoMatch об'єкта Recordset дорівнює True, процедура закриває набір записів (рекомендується незабувати це робити) і завершує свою роботу.