- •Системное и прикладное программное обеспечение
- •Введение
- •Ввод данных. Логика условных операторов. Циклические вычисления
- •1.3 Циклы
- •1.7 Метод InputBox
- •Работа с макросами
- •Экранные формы. Автоматизация экранных форм
- •1.1.2 Элемент Надпись (Label)
- •1.1.3 Элемент Кнопка (CommandButton)
- •1.1.7 Элемент Полоса прокрутки (hScrolBar и vScrolBar)
- •1.1.8 Элемент Список (ListBox)
- •1.1.9 Элемент Комбинированное поле (ComboBox)
- •1.1.10 Массив элементов управления
- •2 Практическая часть
- •Меню и панели инструментов
- •Vba позволяет в Excel настраивать встроенные и создавать собственные управляющие панели.
- •2 Практическая часть
- •Управление приложением Excel с помощью vba
- •1.2 Объект Workbook
- •1.3 Объект Worksheet
- •1.4 Объект Range
- •Автоматизация. Использование объектов Microsoft Word
- •Доступ к данным с помощью ado
- •Процедуры обработки событий и надстройки
- •1.1 Где хранятся процедуры обработки событий
- •1.3 Процедуры, выполняемые при наступлении событий
- •1.4 Создание надстроек Excel
- •Литература
- •Содержание
Доступ к данным с помощью ado
Цель работы: приобретение навыков извлечения данных из внешних источников с помощью ADO.
1 Теоретические сведения
Технология ADO (Active XData Object – Объекты данных ActiveX) позволяет разрабатывать приложения, которые получают доступ и взаимодействуют с данными внешних баз данных с использованием стандарта OLE DB. В отличие от сводных таблиц и MS Query, в данном случае можно не только извлекать данные, но и манипулировать ими непосредственно в базе данных.
С помощью ADO можно импортировать данные из внешнего источника в рабочую книгу Excel, изменить их, а затем вернуть обратно. ADO предлагает объектную модель, т.е. совокупность объектов, посредством которых можно получить доступ к внешним данным и манипулировать ими.
Основные объекты ADO:
- объект Connection (Соединение) отвечает за соединение (связь) с источником данных;
- объект Command (Команда) представляет совокупность команд, таких как организация запросов или манипулирования данными;
- объект Parameter (Параметр) работает в паре с объектом Command, так как содержит параметры этого объекта;
- объект Recordset (Набор записей) – центральный объект объектной модели ADO. Представляет совокупность записей из внешнего источника данных;
- объект Field (Поле) описывает поля (столбцы) множества записей объекта Recordset;
- объект Error (Ошибка) представляет ошибки, возвращаемые из источника данных. Любой оператор, включающий в себя объекты ADO,
может генерировать ошибки. Каждая такая ошибка рассматривается как объект Error из коллекции Errors (Ошибки) объекта Connection.
Основная цель разработчиков приложений при использовании ADO – импортировать данные из внешней базы данных в рабочую книгу Excel. Для достижения этой цели необходимо выполнить следующее:
1) установить соединение с источником данных;
2) получить доступ к данным;
3) извлечь определенные записи из всего множества данных;
4) закрыть соединение с источником данных.
Для написания программы с использованием объектов ADO, необходимо создать ссылку на библиотеку ADO. Для этого необходимо сделать следующее:
- в окне редактора Visual Basic выполните команду Tools References (Сервис Ссылки);
- в списке Available (Возможные ссылки) выберите пункт Microsoft ActiveX Data Objects 2.0 Library (Библиотека Microsoft ActiveX Data Objects 2.0), установив флажок рядом с этим пунктом;
- щелкните на кнопке ОК. Ссылка на библиотеку будет установлена.
Ссылка на библиотеку ADO устанавливается только для открытой рабочей книги. Поэтому создавайте ссылку после того, как будет открыта та книга, в которой будет находиться процедура, использующая ADO.
Ниже приведен пример процедуры, которая с помощью ADO извлекает данные из базы данных Access Борей и помещает их в рабочий лист.
Sub ИмпортДанных ()
Dim rsProducts As ADODB.Recordset
Set rsProducts = New ADODB.Recordset
rsProducts.Open Source := “Товары” , _
activeconnection := “Provider=Microsoft.Jet.OLEDB.4.0.; _
Data Source = C:\Program Files\Microsoft _
Office\Office\Samples\Борей.mdb”, _
CursorType := adOpenStatic, _
LockType := adLockOptimistic, _
Options := adCmdTable
With WorkSheets (“Лист1”)
.Range(“A1”).CurrentRegion.Clear
Application.Intersect(.Range(.Rows(1),
.Rows(rsProducts.RecordCount)),
.Range(.Columns(1), .Columns(rsProducts.Fields.Count))).
Value = Поворот(rsProducts.GetRows)
(rsProducts.RecordCount))
End With
rsProducts.Close
End Sub
Примечание – Стрелочка , поставленная в начале строки кода, обозначает, что строка кода, начатая на предыдущей строчке, не поместилась на печатной строке страницы и перенесена на следующую строку.
Массив данных, извлекаемый из базы данных с помощью ADO, организован в виде двумерной таблицы, где каждый столбец соответствует одной записи данных, а строка соответствует полю, т.е. данные представлены совсем не в том виде, к какому мы привыкли. Поэтому, прежде чем помещать данные в рабочий лист, весь массив данных надо транспонировать (повернуть) так, чтобы столбцы стали строками, а строки – столбцами. Для этого необходимо создать собственную функцию транспонирования.
Ниже приведен пример программы Поворот.
Function Поворот (ByRef ArrayOriginal As Variant) As Variant
Dim x As Integer
Dim y As Integer
Dim i As Integer
Dim j As Integer
Dim ArrayTranspose ( ) As Variant
x = Ubound (ArrayOriginal, 1)
y = Ubound (ArrayOriginal, 2)
ReDim ArrayTranspose (y, x)
For i = 0 To x
For j = 0 To y
ArrayTranspose (j, i) = ArrayOriginal (i, j)
Next
Next
Поворот = ArrayTranspose
End Function
2 Практическая часть
З а д а н и е 1
Создайте экранную форму с тремя переключателями Заказы, Поставщики, Товары (соответствуют таблицам в базе данных Борей).
Напишите процедуру, которая импортировала бы данные из таблицы данных Борей в соответствии с выбранным переключателем.
3 Контрольные вопросы
3.1 Назовите четыре этапа работы с ADO.
3.2 Как прервать соединение с внешним источником данных?
3.3 Какой объект представляет массив данных, извлеченный из внешнего источника с помощью ADO?
3.4 Какой аргумент метода Open используется для указания объекта, из которого извлекаются данные?
Лабораторная работа 10