Связи между таблицами
Откройте окно связей (Ctrl+L). Зафиксируйте все связи, типы (1:1, 1:∞) и каскадные правила. После миграции связи должны сохраниться, но проверить нужно.
Технический документ: переход с формата .mdb (Access 2003) на формат .accdb (Access 2016/2019/365) с сохранением работоспособности на Windows 10.
Перед миграцией необходимо зафиксировать состав объектов базы и выявить потенциальные проблемы.
Откройте базу .mdb в Access 2003 (или в режиме совместимости) и заполните таблицу:
| Тип объекта | Имя | Кол-во записей | Примечание |
|---|---|---|---|
| Таблица | заполнить по каждой таблице | ||
| Запрос | заполнить по каждому запросу | ||
| Форма | заполнить по каждой форме | ||
| Отчёт | заполнить по каждому отчёту | ||
| Макрос | заполнить по каждому макросу | ||
| Модуль VBA | заполнить по каждому модулю | ||
Откройте окно связей (Ctrl+L). Зафиксируйте все связи, типы (1:1, 1:∞) и каскадные правила. После миграции связи должны сохраниться, но проверить нужно.
Обратите внимание на: Счётчик (AutoNumber), OLE Object (проблемный при миграции), Гиперссылка, Расчётное поле. Запишите все нестандартные типы.
Откройте редактор VBA (Alt+F11). Проверьте: ссылки на внешние библиотеки (Tools → References), использование DoCmd.TransferDatabase, API-вызовы Windows (Declare).
Если база разделена (linked tables → отдельный .mdb), зафиксируйте путь к бэкенду и список связанных таблиц.
OLE Object в Access 2003 хранило встроенные объекты (Excel, Word, картинки). В .accdb эти данные могут не отобразиться корректно. Рекомендуется экспортировать содержимое OLE-полей в файлы до миграции.
| Параметр | Значение | Комментарий |
|---|---|---|
| Размер файла .mdb | ___ МБ | Файлы > 2 ГБ потребуют архивации старых записей |
| Кол-во таблиц | ___ | |
| Кол-во записей (суммарно) | ___ | |
| Кол-во форм/отчётов | ___ | |
| Наличие VBA | Да / Нет | |
| Linked tables (бэкенд) | Да / Нет | Если да — нужна миграция обоих файлов |
Целевой формат: .accdb — нативный формат Access 2007–2019/365. Полностью совместим с Windows 10.
| Параметр | Access 2003 (.mdb) | Access 2016+ (.accdb) |
|---|---|---|
| Макс. размер файла | 2 ГБ | 2 ГБ (без изменений) |
| Формат по умолчанию | Jet 4.0 (.mdb) | ACE (.accdb) |
| Шифрование | Нет | Да (AES-128) |
| Поля вложений | Нет | Да (замена OLE Object) |
| Многозначные поля | Нет | Да (но не рекомендуется) |
| История изменений Memo | Нет | Да |
| Вычисляемые поля | Нет | Да |
| Внешние данные (SharePoint, Outlook) | Ограниченно | Расширенная интеграция |
| Совместимость с Windows 10 | Проблемная (UAC, DEP) | Полная |
| Вариант | Лицензия | Плюсы | Минусы |
|---|---|---|---|
| Access 2016 (standalone) | Разовая покупка | Стабильная, без подписки, совместима с Windows 10/11 | Нет обновлений функционала |
| Access 2019 (standalone) | Разовая покупка | Последняя «коробочная» версия | Только Windows 10/11 |
| Microsoft 365 (Access included) | Подписка | Постоянные обновления, последняя версия | Ежемесячная/годовая оплата |
Рекомендация: Access 2016 или 2019 — минимальная версия, гарантирующая полную совместимость с Windows 10 и форматом .accdb.
Пошаговый процесс конвертации базы из формата .mdb в .accdb с сохранением всех объектов.
Резервная копия. Скопируйте исходный файл база.mdb в безопасное место. Имя копии — с датой: база_backup_2026-09-14.mdb.
Сжатие и восстановление. В Access 2003: Сервис → Служебные программы → Сжатие и восстановление. Это устраняет повреждения перед миграцией.
Документация. Заполните таблицы из раздела 1 (аудит) — они нужны для проверки после конвертации.
Откройте .mdb в Access 2016/2019/365. Двойной клик по файлу — Access откроет его в режиме совместимости (строка заголовка покажет «Режим совместимости»).
Конвертация формата. Файл → Сохранить как → База данных Access (*.accdb). Укажите новое имя (например, база_new.accdb). Access преобразует формат.
Проверка объектов. После конвертации откройте .accdb и сверьте количество таблиц, запросов, форм, отчётов, макросов и модулей с данными аудита.
| Проблема | Где искать | Решение |
|---|---|---|
| Поля OLE Object пустые или не читаются | Таблицы с полем типа OLE Object | Заменить на «Вложение» (Attachment) или сохранить файлы отдельно и использовать гиперссылки |
| Ссылки на внешние библиотеки VBA (MISSING:) | VBA → Tools → References | Снять галочку с помеченных «MISSING», подключить актуальные версии библиотек |
| Linked tables указывают на старый .mdb | Диспетчер связанных таблиц (внешние данные) | Переподключить на новый .accdb-бэкенд |
Макросы с DoCmd.TransferDatabase |
Макросы и VBA-процедуры | Проверить параметры — формат источника/приёмника должен быть ACCD |
| Специальные символы в именах полей | Все таблицы | Переименовать: убрать пробелы, точки, спецсимволы. Использовать snake_case или CamelCase |
Если база разделена на фронтенд (.mdb) и бэкенд (.mdb):
Сконвертируйте бэкенд в .accdb первым (пункты 4–6).
Сконвертируйте фронтенд в .accdb.
Во фронтенде: Внешние данные → Управление связями — переподключите все таблицы на новый .accdb-бэкенд.
Разверните .accdb-фронтенд пользователям.
Проверка после миграции — убедиться, что все данные и объекты работают корректно.
| № | Проверка | Метод | Результат |
|---|---|---|---|
| 1 | Кол-во записей в каждой таблице | Сравнить с данными аудита (раздел 1) | ☐ Совпадает |
| 2 | Первичные ключи | Открыть таблицу, проверить уникальность PK | ☐ Без дублей |
| 3 | Внешние ключи (связи) | Проверить окно связей, каскадные правила | ☐ Сохранены |
| 4 | Поля с маской ввода | Открыть таблицу в режиме конструктора, проверить свойства полей | ☐ Работают |
| 5 | Значения по умолчанию | Проверить свойства полей в конструкторе | ☐ Совпадают |
| 6 | Подстановки (Lookup) | Открыть таблицы с полями Lookup, проверить выпадающие списки | ☐ Работают |
| № | Проверка | Метод | Результат |
|---|---|---|---|
| 7 | Запросы выполняются | Открыть каждый запрос, проверить результат | ☐ Без ошибок |
| 8 | Формы открываются | Открыть каждую форму, пролистать записи | ☐ Данные отображаются |
| 9 | Отчёты формируются | Предпросмотр каждого отчёта | ☐ Без ошибок |
| 10 | Макросы работают | Запустить каждый макрос | ☐ Выполняются |
| 11 | VBA-модули компилируются | VBA → Debug → Compile | ☐ Без ошибок |
| 12 | Кнопки на формах | Нажать каждую кнопку с привязанным действием | ☐ Работают |
| № | Проверка | Ожидаемый результат |
|---|---|---|
| 13 | Открытие .accdb двойным кликом | Access открывает базу без ошибок UAC/DEP |
| 14 | Работа с включённым UAC | База работает без запуска от имени администратора |
| 15 | Печать отчётов | PDF-экспорт и печать работают корректно |
| 16 | Экспорт в Excel | Выгрузка данных из таблиц/запросов в .xlsx |
Если база используется несколькими пользователями одновременно:
Правила работы с мигрированной базой на Windows 10.
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| ОС | Windows 10 (x64) | Windows 10 22H2+ / Windows 11 |
| Access | Access 2016 | Access 2019 или Microsoft 365 |
| ОЗУ | 4 ГБ | 8 ГБ+ |
| Свободное место | 2× размер базы | Для сжатия и резервных копий |
| Сеть (для общего доступа) | 100 Мбит/с | 1 Гбит/с, стабильное соединение |
Частота: ежедневно (или перед каждым сеансом массовых изменений).
Метод: копировать .accdb на сетевой диск / USB / облако.
Имя: база_YYYY-MM-DD.accdb.
Хранение: минимум 7 последних копий.
Частота: еженедельно или при росте файла.
Метод: Файл → Сведения → Сжатие и восстановление.
Зачем: удаляет «мусор», уменьшает файл, ускоряет работу.
Если бэкенд перемещён — переподключите таблицы через Внешние данные → Управление связями. Путь к бэкенду должен быть доступен всем пользователям.
Каждый пользователь должен иметь свою локальную копию фронтенда (.accdb). Не открывайте общий файл одновременно — это источник повреждений. Обновления фронтенда — через замену файла.
| Проблема | Причина | Решение |
|---|---|---|
| «Файл заблокирован другим пользователем» | Файл .laccdb не удалён (аварийное завершение) | Удалить файл база.laccdb в папке с базой (когда никто не работает) |
| База открывается медленно | Фрагментация, накоплен «мусор» | Сжатие и восстановление (пункт 5.2) |
| «Недостаточно памяти» | Сложные запросы, индексы | Оптимизировать запросы, добавить индексы на поля фильтрации |
| Формы выглядят иначе | Разрешение экрана, тема Windows | Настроить макет форм в конструкторе под текущее разрешение |
| VBA не компилируется | Ссылки на старые библиотеки | VBA → Tools → References → снять MISSING, подключить актуальные |