[an error occurred while processing this directive] | |
1-й час. Знакомство с Visual Basic for Applications 3-й час. Работа с элементами управления 4-й час. Переменные и константы 6-й час. Логика условных операторов 7-й час. Циклические вычисления 9-й час. Основные объекты Excel 11-й час. Редактор Visual Basic 15-й час. Автоматизация экранных форм 20-й час. Получение внешних данных |
20-й час. Получение внешних данныхВ этом часе мы в основном будем работать с надстройкой Excel, которая называется MS Query. Используя это средство, можно создать запрос для импорта данных из внешнего источника данных. И лучший способ изучения таких запросов - создание соответствующих макросов! В этом часе будут рассмотрены следующие вопросы.
Базы данных, доступные из ExcelВы будете удивлены, когда узнаете, что из Excel можно получить доступ практически ко всем современным базам данных. Чтобы не быть голословным, приведу небольшой список этих баз данных:
У вас может возникнуть вопрос, зачем вообще надо импортировать данные из внешних баз данных в Excel. Дело в том, что определенные манипуляции с данными Excel выполняет лучше, чем базы данных, например выполнение сложных вычислений, анализ данных и построение диаграмм. После импортирования к данным можно применить весь мощный аппарат обработки данных Excel. Средства доступа к внешним даннымExcel имеет много средств доступа к внешним источникам данных (в частности, к ним можно отнести и сводные таблицы, с которыми мы работали в предыдущем часе). Среди всего многообразия таких средств выделим следующие:
Средства ADO предпочтительны для организации быстрого и эффективного доступа к базе данных Microsoft Access и ей подобных. DAO в основном применяется для поддержки обратной совместимости со старыми версиями баз данных. Технология ODBC используется для соединения с широким спектром самых разнообразных баз данных, в том числе с Microsoft SQL Server и Oracle, В этом часе мы уделим основное внимание возможностям MS Query по импортированию данных в Excel. Использование MS QueryВ Excel самый простой способ установить связь с внешним источником данных и извлечь из него данные состоит в использовании средства MS Query, при этом извлеченные данные помешаются в рабочий лист Excel. MS Query имеет одно несомненное преимущество для разработчиков приложений: процесс создания связи с базой данных и извлечение данных можно записать в виде макроса, что помогает уменьшить время разработки приложений. Но MS Query имеет и свои недостатки - запрос к внешним базам данных с помощью MS Query выполняется очень медленно. Поэтому разработчику приложений приходится решать непростой вопрос, что для него важнее: быстрое и простое создание кода приложения или быстрое и эффективное выполнение готового приложения. Если принято решение использовать механизм MS Query как часть разрабатываемого приложения, то, прежде всего, необходимо инсталлировать MS Query на компьютере разработчика. MS Query не инсталлируется при типовой установке Excel 2000 или Office 2000, но инсталлируется как часть полной установки. После инсталляции Excel 2000 MS Query можно установить отдельно. В этом часе в качестве "подопытной" базы данных будем использовать базу данных Борей, которая входит в поставку Microsoft Access. Для создания макроса, извлекающего данные из базы данных Борей, выполните следующие действия.
Рис. 20.1. Диалоговое окно для выбора источника данных
Рис. 20.2. Следующий шаг после установки связи с базой данных - выбор данных
Рис. 20.3. Диалоговое окно, позволяющее выполнять фильтрацию импортируемых данных
Рис. 20.4. После задания фильтра на извлекаемые данные можно установить порядок сортировки записей
Рис. 20.5. Последний вопрос: что вы хотите делать с данными?
Рис. 20.6. И еще один вопрос: куда поместить данные?
Рис. 20.7. Данные вставлены в рабочий лист Код записанного макросаТеперь перейдем в редактор Visual Basic и откроем процедуру полный код которой приведен в листинге 20.1. Листинг 20.1. Процедура ПримерMSQuery
В приведенной процедуре первый оператор (основной в этой процедуре) выполняет метол Add (Добавить). Этот оператор содержит всю информацию о соединении с внешней базой данных, включая ее местоположение и информацию об используемых драйверах:
После установления связи с базой данных задается значение свойства CommandText (Текст команд) объекта таблицы запроса QueryTable. Здесь основным является оператор Select (Выбор), указывающий, какие данные выбраны в базе данных, и задающий фильтр на выбранные данные и порядок их сортировки:
Далее в процедуре задаются разнообразные свойства запроса и выбираемых данных. Здесь вы можете еще раз оценить преимущества записи макросов - на самостоятельное написание кода такой процедуры пришлось бы затратить значительное время плюс нелегкая борьба с неизбежными ошибками в коде. Теперь несколько изменим процедуру. Как вы помните, при создании запроса в диалоговом окне Создание запроса: отбор данных (рис. 20.3) было наложено ограничение на выбираемые данные: отбирались только записи, у которых значения в столбце Цена больше или равны 20. При выполнении макроса вы не сможете задать другое ограничение. Изменим код процедуры, чтобы во время ее выполнения можно было бы задать ограничения на значения в столбце Цена. Код измененной, процедуры приведен в следующем листинге, отличия этого кода от кода листинга 20.1 выделены полужирным шрифтом. Листинг 20.2. Измененная процедура ПримерMSQuery
В начале этой процедуры объявляются две переменные. Переменная sngPrice хранит значение, введенное пользователем. Вторая переменная, sMessege, используется для отображения текста в окне ввода. Выполнение процедуры начинается с создания нового рабочего листа, таким образом, результат каждого выполнения процедуры будет представлен на отдельном листе. Далее отображается окно ввода, где пользователь должен ввести число, которое затем будет помещено в оператор Select. Выполните процедуру. В окно ввода введите число 200 и щелкните на кнопке ОК. Вы увидите, что в рабочую книгу вставлен новый рабочий лист и в нем отображаются данные, у которых в столбце Цена значения больше или равны 200. Средство MS Query не ограничено работой с простыми таблицами. Можно создавать запросы, основанные на нескольких связанных таблицах базы данных. Еще один способ использования MS Query состоит в создании файла запроса, сохраняющего все условия запроса. Этот сохраненный запрос затем можно использовать в какой-либо процедуре. Для того чтобы показать работу с сохраненным запросом, сначала выделите любую ячейку с извлеченными данными (например, ячейку А1). Выведите на экран панель инструментов Внешние данные и щелкните на кнопке Изменить запрос этой панели. В последовательно открывающихся диалоговых окнах Создание запроса щелкайте на кнопках Далее, пока не дойдете до окна Создание запроса: заключительный шаг. В этом диалоговом окне щелкните на кнопке Сохранить запрос. В открывшемся диалоговом окне Сохранить как введите имя сохраняемого запроса (в нашем случае можно задать имя Цена) и щелкните на кнопке Сохранить. Затем щелкните на кнопке Готово в окне Создание запроса: заключительный шаг. Теперь покажем, как можно использовать сохраненный запрос. Вставьте новый лист в рабочую книгу. Начните запись макроса с именем Цена. Выполните команду Данные > Внешние данные > Выполнить сохраненный запрос. Откроется диалоговое окно Выполнить запрос, в котором выберите запрос Цена, а затем щелкните на кнопке Получить данные. Откроется знакомое вам окно Возврат данных в Microsoft Excel (рис. 20.6), в котором щелкните на кнопке ОК. После того как данные будут вставлены в рабочий лист, остановите запись макроса. Перейдите в редактор Visual Basic и откройте код записанного макроса. Этот код приведен в листинге 20.3. Листинг 20.3. Процедура Цена
Основное отличие этой процедуры от процедуры ПримерMSQuery заключается в применяемом методе Add. В данной процедуре в этом методе указывается информация для связи с файлом запроса, а не с файлом базы данных. Кроме того, в процедуре Цена не задаются значения свойства CommandText (они хранятся в файле запроса). Как видите, эта процедура значительно проще процедуры ПримерMSQuery. Но она имеет и недостаток: здесь нельзя во время выполнения процедуры ввести ограничения на извлекаемые данные. Но если в вашем приложении надо часто выполнять стандартный запрос, не требующий вмешательства пользователя, то подход с применением сохраненного запроса, вполне себя оправдывает. РезюмеТеперь вы знаете две технологии извлечения данных из внешних источников: в предыдущем 19-м часе мы изучали сводные таблицы, которые также можно использовать для получения доступа к внешним данным, а в этом часе рассмотрели возможности средства MS Query по извлечению данных из внешних баз данных. Обе эти технологии позволяют записывать макросы, что значительно облегчает труд разработчиков приложений Excel. В следующем часе мы изучим способ организации доступа к внешним данным с помощью ADO. Эта технология самая эффективная и гибкая среди всех аналогичных технологий, рассматриваемых в этой книге. Вопросы и ответыВопрос. Можно ли посредством MS Query использовать запросы, созданные в Access? Ответ. И да, и нет. С помощью MS Query можно создать запрос, который будет основываться на запросах, созданных в Access. Но напрямую запросы Access недоступны в Excel (например, путем выполнения команды Данные > Внешние данные > Выполнить сохраненный запрос). Вопрос. Как изменить запрос, созданный с помощью MS Query? Ответ. В диалоговом окне Создание запроса: заключительный шаг есть переключатель Просмотр и изменение данных в MS Query. После установки этого переключателя и щелчка на кнопке Готово открывается окно MS Query с интерфейсом, очень напоминающим окно Access для создания запросов. ПрактикумС помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении. Тесты
УпражнениеСоздайте копию процедуры ПримерMSQuery и назовите ее СортировкаДанных. Создайте экранную форму с четырьмя переключателями:
Измените процедуру СортировкаДанных таким образом, чтобы извлекаемые данные сортировались по тому столбцу, которому соответствует выбранный переключатель в экранной форме. 1 Стандарт ODBC постепенно уходит из компьютерной индустрии. В настоящее время Microsoft активно продвигает стандарт OLE DB, который является наследником и ODBC, и OLE. Этот стандарт лучше работает с такими "нестандартными" типами данных, как изображения и звук. Приложения пакета Office 2000 имеют встроенные драйверы OLE DB, поэтому Excel 2000 обращается к драйверам ODBC посредством OLE DB. Об OLE DB подробнее сказано в следующем 21-м часе. - Прим. ред. |
[an error occurred while processing this directive] |