[an error occurred while processing this directive] | |
1-й час. Знакомство с Visual Basic for Applications 3-й час. Работа с элементами управления 4-й час. Переменные и константы 6-й час. Логика условных операторов 7-й час. Циклические вычисления 9-й час. Основные объекты Excel 11-й час. Редактор Visual Basic 15-й час. Автоматизация экранных форм 20-й час. Получение внешних данных |
21-й час. Доступ к данным с помощью ADOВ предыдущем часе мы изучали способы импортирования данных в Excel с помощью MS Query, отметив и недостатки, присущие данной технологии. В этом часе мы рассмотрим Извлечение данных из внешних источников с помощью ADO. Эта технология более гибкая и эффективная, чем MS Query. В этом часе будут рассмотрены следующие вопросы.
Что такое ADOТехнология ADO (ActiveX Data Objects - Объекты данных ActiveX) позволяет разрабатывать приложения, которые получают доступ и взаимодействуют с данными внешних баз данных с использованием стандарта OLE DB. В отличие от сводных таблиц и MS Query, в данном случае можно не только извлекать данные, но и манипулировать ими непосредственно в базе данных. Благодаря этому пользователь имеет больший контроль и может управлять данными с меньшими затратами ресурсов своей компьютерной системы. OLE DB - это совокупность интерфейсов Component Object Model (Модель составных объектов), сокращенно СОМ, которые предлагают единообразный подход для организации доступа к широкому спектру информационных ресурсов. С помощью ADO можно импортировать данные из внешнего источника в рабочую книгу Excel, изменить их, а затем вернуть обратно. Объекты доступа к базам данныхКак следует из названия ActiveX Data Objects (Объекты данных ActiveX), ADO предлагает объектную модель, т.е. совокупность объектов, посредством которых можно получить доступ к внешним данным и манипулировать ими. Вот несколько основных объектов этой модели.
Использование ADOОсновная цель разработчиков приложений при использовании ADO - импортировать данные из внешней базы данных в рабочую книгу Excel. Для достижения этой цели необходимо выполнить следующее.
Создание ссылки на библиотеку ADOПрежде чем писать программы с использованием объектов ADO, необходимо создать ссылку на библиотеку ADO. Для этого сделайте следующее.
(Ссылка на библиотеку ADO устанавливается только для открытой рабочей книги. Поэтому создавайте ссылку после того, как будет отрыта та книга, в которой будет находиться процедура, использующая ADO. - Прим. ред.) Создадим процедуру, которая с помощью ADO будет извлекать данные из базы данных Access Борей и помешать их в рабочий лист. Откройте новую рабочую книгу и создайте процедуру ИмпортДанных, код которой приведен в листинге 21.1. Листинг 21.1. Процедура ИмпортДанных
В начале своего выполнения процедура работает с объектом Recordset. Обратите внимание на метол Open (Открыть) этого объекта. Аргумент Source (Источник) метода Open задает имя таблицы в базе данных (в данном случае процедура будет работать с таблицей Товары). Аргумент activeconnection (активное соединение) содержит всю информацию, необходимую для соединения с базой данных:
После установления соединения с базой данных, все готово для импортирования ее, данных в рабочую книгу. Но здесь вас подстерегает небольшая проблема. Массив данных, извлекаемый из базы данных с помощью ADO, организован в виде двумерной таблицы, где каждый столбец соответствует одной записи данных, а строка соответствует полю, т.е. данные представлены совсем не в том виде, к какому мы привыкли. Поэтому, прежде чем помешать данные в рабочий лист, весь массив данных надо транспонировать (повернуть) так, чтобы столбцы стали строками, а строки - столбцами. Если вы опытный пользователь Excel, то можете предположить, что для этого можно воспользоваться функцией Excel ТРАНСП (транспонирование). Но дело осложняется тем, что массивы импортируемых данных, как правило, очень велики и функция ТРАНСП с ними не всегда справляется. Поэтому надо создать собственную функцию транспонирования (код такой функции с названием Поворот приведен ниже в листинге 21.2). В процедуре ИмпортДанных в строках кода
сначала очищается текущая активная область рабочего листа, начиная с ячейки А1, а затем используется метод Intersect (Пересечь) В сочетании с функцией транспонирования Поворот. Метод Intersect возвращает объект Range (Диапазон), состоящий из прямоугольной области пересечения двух и более диапазонов ячеек. В данном случае создается пересечение диапазона импортируемых данных и ячеек всего рабочего листа. Последний оператор rsProducts.Close закрывает соединение с базой данных. Теперь приведем код функции транспонирования Поворот. Листинг 21.2. Функция Поворот
Теперь все готово для выполнения процедуры ИмпортДанных. Перейдите в рабочую книгу и выполните процедуру. Через несколько мгновений в рабочем листе появятся импортированные данные (рис. 21.1).
Рис. 21.1. Данные, импортированные с помощью ADO РезюмеВ этом часе был сделан небольшой обзор возможностей и основных понятий ADO. Мы также создали процедуру, импортирующие данные из внешнего источника в рабочую книгу. В следующем часе мы продолжим изучение технологии ADO и создадим экранную форму, которая позволит пользователю выбирать и редактировать данные. Вопросы и ответыВопрос. Только ли с базами данных Access можно работать посредством ADO? Ответ. Нет, с помощью ADO можно работать со многими типами баз данных, включая SQL Server и FoxPro. Вопрос. Можно ли процесс импортирования данных посредством ADO записать с помощью макроса? Ответ. Нет, так как запрос на выборку данных здесь основан на использовании специальных команд, которые невозможно выполнить с помощью средств Excel. ПрактикумС помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении. Тесты
УпражнениеСоздайте экранную форму с тремя переключателями Заказы, Поставщики, Товары (соответствуют таблицам в базе данных Борей). Напишите процедуру, которая импортировала бы данные из таблицы базы данных Борей в соответствии с выбранным переключателем. |
[an error occurred while processing this directive] |