Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

3.12.3. Способы работы с внешними данными

3.12.3.1. Присоединение таблиц

Самым простым способом доступа к таблицам сервера является при­соеди­нение таблиц. Рассмотрим его порядок.

Командой Файл/Внешние данные/Связь с таблицами вызы­ва­ется окно Связь. В поле Тип файлов выберем ODBC Databases, и появится окно Выбор источника данных. На странице Источник данных компьютера этого окна выберем источник данных или создадим новый кнопкой Создать. Можно создать новый источник кнопкой Создать (п. 3.12.1) либо щелкнуть дважды на выбранном существующем источнике, на­при­мер Продажа товаров (п. 3.12.1), и будет установлено соединение. В окне Связь с таблицами от­метим присоединяемые таблицы или представления, которые появятся на странице Таб­лицы окна базы данных.

Все присоединяемые таблицы или представления должны иметь пер­вич­ный индекс, чтобы иметь возможность корректировки таблиц сред­ст­вами Access. Если его нет, то выбирается первый уникальный индекс или выводится список всех полей для выбора пользователем нужного поля в качестве первич­но­го ключа. Ключ представления можно добавить и после при­соеди­нения командой SQL:

Create Unique Index <имя индекса> On <имя представления> (<имя поля>)

Строка подключения сохраняется в свойстве Описание таблицы. Этот способ удобен для пользователя, но имеет низкую скорость обра­бот­ки данных из-за работы про­цессора JET и драйвера ODBC.

3.12.3.2. Сквозные запросы

Сквозной запрос (команда SQL или вызов хранимой процедуры) выполняется непосредственно на сер­вере (его средствами, напримр SQL Server), минуя процессор JET и драй­вер ODBC, что значительно сокращает время обработки, но без воз­мож­ности обновления данных на сервере. Тре­бу­ется знание синтаксиса языка SQL сервера. Приложение привязывается к типу сервера.

Для создания сквозного запроса выполняется команда Создание запроса в режиме конструктора; далее следует закрыть окно выбора таблицы или запроса, выполнить команду Запрос/Запрос SQL/К серверу и ввести текст команды SQL. Наконец, сформируйте значения свойствам запроса: строка под­к­лючения ODBC, возврат записей и др.

3.12.3.3. Хранимые процедуры

Хранимые процедуры находятся на сервере и обычно создаются прог­рам­мой SQL Enterprise Manager. На основе сквозных запросов, вы­зы­вающих хранимые процедуры, строятся запросы, которые исполь­зуют­ся при создании других запросов, форм и отчетов. Если нужно коррек­ти­ро­вать данные, то можно создать локальную таблицу. Ее нужно от­кор­ректировать (помечая откорректированные записи) и через хранимую процедуру произ­вес­ти передачу измененных записей на сервер.

Для этого можно создать визуальными средствами один сквозной запрос, возвращающий набор данных (для формирования локальной таблицы), и второй запрос (для передачи изменений на сервер) без воз­вра­ще­ния набора. Содержание запросов изначально не важно, нужно задать значе­ния свойствам Строка подключения ODBC и Возврат записей.

Пример программы формирования локальной таблицы .

Dim qr as QueryDef ‘объектная переменная с описанием запроса

Set qr=CurrentDb.QueryDefs(“Запрос”) ‘открытие запроса к серверу

qr.SQL=”Изделия” ‘источник формирования набора ‑ имя хранимой процедуры

qr.Close ‘закрытие запроса

CurrentDb.Execute ”Delete *From Локальная_таблица” ‘удаление старой таблицы

‘выполнение запроса с подзапросом для формирования локальной таблицы

CurrentDb.Execute ”Insert Into Локальная_таблица Select * From Запрос”

Пример программы сохранения одной откорректированной записи

Dim rs as recordset, qr as QueryDef ‘объявления объектных переменных

Dim i As Integer, strSQL As String, strFields As String ‘объявление переменных

RunCommand acCmdSaveRecord ‘сохрание записи в локальной таблице

‘записи берутся не из локальной таблицы, а из свойства RecordClone формы

Set rs=Forms!Form1.RecordsetClone

‘формирование строки с именем хранимой процедуры и с параметром: список

‘значений полей из формы, разделенных запятыми. Список заключается в ‘кавычки (chr(34)). При формировании строки следует знать: даты

‘указываются в виде “yyyymmdd hh:mm:ss”, вещественные числа указываются с ‘десятичной точкой (а не запятой), значения Null указываются в виде строки ‘NULL без кавычек, строки ограничиваются апострофами.

For i=0 To rs.Fields.Count-1 ‘формирование параметров хранимой процедуры

StrFields=strFields & rs.Fields(i).Value & “,” ‘значение i‑го поля

Next

strSQL=”Правка “&chr(34)&strSQL&chr(34) ‘строка вызова хранимой процедуры

Set qr=Currentdb.QueryDefs(“Запрос_на_сохранение”) ‘откр. запроса к серверу

qr.SQL=strSQL ‘формирование строки с описанием источника данных

qr.ReturnsRecords=False ‘набор не возвращается

qr.Execute ‘выполнение запроса (можно qr.OpenRecordset)