Добро пожаловать на вторую часть нашей трехчастной серии о использовании MS Access в качестве фронтенда для SQL Server. В первой статье мы обсудили, как создать новую базу данных SQL Server из базы данных Access с помощью мастера масштабирования. В этой статье мы сосредоточимся на связывании базы данных Access с существующей базой данных SQL Server.
Прежде чем мы начнем, важно отметить, что проектирование базы данных, создание таблиц, форм, запросов и отчетов в Access выходит за рамки этих статей. Мы предполагаем, что вы знакомы с основными функциональными возможностями Access и имеете необходимые привилегии и разрешения в SQL Server.
Создание источника данных ODBC (DSN)
В этом примере мы создадим файл DSN, указывающий на существующую SQL-базу данных. Если вы уже знакомы с созданием файла DSN, вы можете пропустить этот раздел.
Чтобы создать файл DSN, откройте администратор источников данных ODBC и перейдите на вкладку “Файл DSN”. Он может находиться либо в Панели управления, либо в Инструментах администрирования, в зависимости от вашей операционной системы клиента. Название апплета также может немного отличаться.
Нажмите “Добавить”, и появится мастер создания нового источника данных. Прокрутите вниз и выберите “SQL Server”. Введите имя файла, что-то значимое, что также будет именем DSN. Нажмите “Далее” и “Готово”.
Запустится еще один мастер. Заполните описание, если хотите, и выберите сервер. Выберите тип аутентификации и установите базу данных по умолчанию, к которой вы хотите установить связь. Установите региональные параметры при необходимости и нажмите “Готово”. Вы можете протестировать источник данных на этом этапе.
Связывание с существующей SQL-базой данных
В этом примере давайте начнем с новой пустой базы данных Access и свяжем ее с таблицами базы данных, созданной в первой статье. Это намного проще, если вы сначала настроите файл DSN, указывающий на SQL-базу данных.
После открытия новой пустой базы данных в Access, перейдите в Файл -> Получить внешние данные -> Связать таблицы. Примечание: Убедитесь, что вы выбираете “Связать таблицы”, а не “Импортировать”. Импортирование скопирует данные, но не сохранит связь с SQL.
Появится диалоговое окно Открытие файла. Выберите ODBC-базы данных. Появится диалоговое окно ODBC DSN и позволит вам выбрать DSN. Появится список пользовательских таблиц. Выберите таблицы, которые вас интересуют для связывания.
Если вы использовали безопасность SQL Server для настройки своего DSN, вы можете сохранить пароль в строке подключения, отметив “Сохранить пароль”. В противном случае ваши клиенты будут приглашены к вводу логина и пароля каждый раз при открытии базы данных. Вы можете избежать этой проблемы, используя аутентификацию Windows.
Наконец, нажмите “ОК”, и будут созданы связи таблиц. Чтобы изменить данные в связанной таблице, необходимо определить первичный ключ. Во время создания связей таблиц вам будет предложено указать уникальный идентификатор для таблиц без первичного ключа. Настоятельно рекомендуется определить первичные ключи в таблицах SQL перед попыткой связывания.
Просмотр связанных таблиц
Теперь вы можете просматривать связанные таблицы в Access. Обратите внимание, что имена таблиц также включают владельца или имя схемы. Вы можете легко переименовать каждую таблицу, щелкнув правой кнопкой мыши и выбрав “Переименовать”.
Вот подпрограмма, которую вы можете добавить в модуль VBA, которая поможет вам переименовать несколько таблиц:
Sub RemoveDBO()
Dim tbl As TableDef
For Each tbl In CurrentDb.TableDefs
If Len(tbl.Connect) > 0 Then
tbl.Name = Replace(tbl.Name, "dbo_", "")
End If
Next
Set tbl = Nothing
End Sub
Все процедуры в этой статье требуют, чтобы база данных ссылалась на библиотеку объектов Microsoft DAO. Вам может потребоваться настроить ссылку на библиотеку DAO. Откройте модуль и нажмите Инструменты -> Ссылки. Найдите библиотеку объектов Microsoft DAO в списке, установите флажок и нажмите ОК.
Работа со связанными таблицами
Теперь у вас есть обновляемые таблицы, связанные с SQL. Вы можете почти так же обращаться с ними, как с обычными таблицами Access в запросах, формах и отчетах. Мы рекомендуем использовать отличные инструменты и мастера, которые предоставляет Access, для создания удобного пользовательского интерфейса и отказа от прямого доступа к связанным таблицам вашим клиентам.
Пересвязывание таблиц
Если вам нужно перенаправить таблицы на другой сервер, Access предоставляет инструмент, который облегчает эту задачу – Менеджер связанных таблиц. Чтобы использовать этот инструмент, создайте файл DSN, указывающий на ваш новый сервер. Затем перейдите в Инструменты -> Утилиты базы данных -> Менеджер связанных таблиц. Вы можете выбрать все таблицы и отметить “Всегда запрашивать новое местоположение”, чтобы получить запрос на новую информацию о подключении. В противном случае вы можете просто обновить существующие подключения.
Вы также можете пересвязать таблицы с помощью кода. Вот пример подпрограммы для изменения параметра сервера:
Sub LinkToNewServer(ByVal newServer As String, ByVal oldServer As String)
Dim tbl As TableDef