Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Выбор метода доступа к данным
Выбор подходящего метода доступа к данным основывается на анализе задач, стоящих перед разработчиком. В приложениях Excel, используемых для просмотра или анализа данных, не требующих их обновления, нужно использовать сводные таблицы, которые позволяют организовать доступ к внешним источникам данных. В приложениях, требующих как импорта, так и экспорта данных, следует использовать DAO. Так как поток данных в сводную таблицу однонаправлен, то для создания приложения, дающего возможность пользователю изменять данные в сводной таблице, необходимо разработать специальный интерфейс четырехэтапного процесса управления потоком данных: С помощью ODBC данные передаются в сводную таблицу для просмотра и анализа. Если необходимо изменить данные в сводной таблице, их следует скопировать в диапазон на рабочем листе и там модифицировать. После внесения изменений данные экспортируются во внешнюю базу данных с использованием технологии DAO. Сводная таблица обновляется с помощью метода Refreshобъекта PivotTable. DAO предоставляет возможность доступа к данным как через ядро базы данных Jet, так и прямо через ODBC. Ядро Jet является собственной внутренней системой программы Access, распространяемой вместе с Visual Basic и Office. Ядро БД Jet позволяет осуществлять доступ как к локальным источникам информации (БД Access), так и к согласованным с ODBC источникам данных, таким как SQL Server или Oracle. Jet обладает следующими особенностями: – в одном запросе можно комбинировать данные из источников различных типов (например, данные из локальных таблиц Access и таблицы DB2, находящейся на сервере); – обеспечивается объектная модель изменения структуры БД, т.е. таблиц, индексов, полей и связей, средств защиты БД для пользователей и групп. Эти возможности увеличивают наклалные расходы (особенно при доступе к серверным источникам данных (SQL Server, Sybase, Oracle)). Это обусловлено, в частности, самим процессом выполнения запроса: для связи с серверными БД используется ODBC, следовательно, операции проходят два уровня (Jet и ODBC). Поэтому при обращениях к серверным источникам данных предпочтительным вариантом является использование доступа через ODBCDirect, который не взаимодействует с Jet, а обращается прямо к ODBC. Учитывая сказанное выше, можно сделать следующие выводы: – для доступа к БД «настольных» СУБД типа Access, Dbase, Paradox или FoxPro следует использовать объекты доступа к данным DAO Jet; – для управления структурой БД нужно использовать DAO Jet; – для комбинирования данных из двух или более источников различного типа используется DAO Jet; – для доступа к БД серверного типа используются объекты доступа к данным ODBCDirect. Более полную информацию можно получить в справочной системе. 2.3. Особенности раннего и При создании приложений часто возникает необходимость организации взаимодействия нескольких офисных программ: например, данные хранятся и обрабатываются в электронных таблицах Excel, но для подготовки отчетов используются шаблоны документов Word. В этом случае одно из приложений становится клиентом другого. В данном случае в качестве клиента выступает Excel, который запрашивает обслуживание у Word, являющегося сервером. Технология связывания рассматривалась выше. Однако при переносе автоматизированных документов, приложений, созданных на основе MS Office, на другой компьютер могут возникнуть проблемы несовместимости версий программ. Эти проблемы рассматриваются в данной главе. Задача связывания Для взаимодействия клиента и сервера, то есть для того, чтобы клиент мог использовать свойства и методы сервера, серверный объект должен быть связан с переменной на стороне клиента. Связывание определяет, как клиент соединяется с конкретным объектом-сервером. В VBA форма связывания в первую очередь определяется тем, как разработчик приложения-клиента объявляет объектные переменные. При работе с объектами Automation может быть использовано раннее и позднее связывание. Раннее связывание подразумевает, что во время компиляции (в случае VBA заранее, так как эта среда является интерпретирующей) заранее известно, какой интерфейс будет использован для доступа к объектной переменной. При позднем связывании до создания объекта о нем ничего не известно. Раннее связывание При раннем связывании тип объектной переменной явно указывается при ее объявлении. Например, в следующей строке объявляется переменная, которая может содержать указатель только на объект Microsoft Excel Application: Dim ExlApp As Excel.Application При попытке сохранить в такой переменной ссылку на объект другого типа произойдет ошибка. Если используемый объект принадлежит другому приложению или внешнему компоненту (например, используется приложение Word из Excel), то предварительно необходимо установить ссылку на библиотеку типов используемого компонента. Использование раннего связывания имеет два основных преимущества: повышение производительности приложения во время выполнения и возможность интеллектуальной подсказки синтаксиса обращения к свойствам и методам используемого объекта. Первое преимущество достигается за счет оптимизации обращения к объекту, а второе – за счет использования информации из библиотеки типов. Однако ранее связывание имеет один существенный недостаток. Так как тип переменной задается явно, то переменная не может содержать ссылку ни на какой другой тип. Данный факт приводит к невозможности разработки программных проектов документов, работающих на различных версиях Microsoft Office, так как каждая из версий Office имеет свою версию библиотеки типов, хотя и при совпадении имен объектов. Продемонстрируем изложенную проблему на примере – разработаем рабочую книгу Excel в Office 2003, в программном проекте которой добавим процедуру вызова функциональности Word соответствующей версии. Для этого установим в проекте ссылку на библиотеку объектов (рис. 42) и заметим, что версия библиотеки имеет версию 11. Затем введем приведенный ниже прграммный код: Public Sub TestLinking() Dim WordApp As New Word.Application End Sub Рис. 42. Диалоговое окно установки ссылок Рис. 43. Сообщение об ошибке при смене версии Рис. 44. Настройка (изменение) ссылок на библиотеки При попытке выполнения макроса в Excel 97 выдается сообщение об ошибке (рис. 43). При просмотре ссылок проекта указывается, что библиотека Microsoft Word 11.0 Object Library не найдена (рис. 44). Толька при удалении ссылки на отсутствующую библиотеку и установки ссылки на Microsoft Word 8.0 Object Library программа выполняется без ошибок. Позднее связывание Избавиться от недостатка раннего связывания можно, заранее не объявляя тип объекта, то есть, используя позднее связывание. В таком случае, для объявления объектной переменной необходимо воспользоваться наиболее общим типом, который может содержать указатель на любой объект. В VBA это типы Variant и Object. Для повышения производительности рекомендуется использовать тип Object. Public Sub TestLinking() Dim WordApp As Object Dim Doc As Object Set WordApp = CreateObject(" Word.Application" ) WordApp.Visible = True Set Doc = WordApp.Documents.Add Doc.Range.Text = UCase(" Text in Document." ) End Sub Очевидно, что при позднем связывании использовать оператор new для создания нового экземпляра объекта уже невозможно, поэтому необходимо использовать функции CreateObject или GetObject. По сравнению с ранним связыванием происходит инвертирование достоинств и недостатков. Теперь программный проект работает в любой версии Office, начиная с 97 – явной ссылки на библиотеку типов нет, а имена объектов одинаковые в каждой версии. Но при разработке программы исчезли подсказки и заметно снизилась скорость взаимодействия клиента и сервера. Также пропадает возможность обработки сообщений от объекта при помощи ключевого слова WithEvents. Принимать решение об использовании раннего или позднего ввязывания необходимо, учитывая обстоятельства. Если известно, что документ будет использоваться на конкретной версии Office, тогда желательно использовать раннее связывание. Если предполагается, что документ будет использоваться на различных версиях Office, то на этапе разработки можно использовать раннее связывание (для использования подсказок в редакторе), для создания экземпляров объектов использовать CreateObject, а при передаче пользователям заменить все явно указанные типы на Object. 2.4. Доступ к данным и автоматизация Текстовый процессор Word позволяет снизить трудоемкость многих операций, выполняемых при подготовке документов. Средствами автоматизации документов Word являются поля (элементы документов, автоматически вычисляемые Word), специальные команды, автоматизирующие трудоемкие операции (команды поиска и замены, проверки правописания, автозамены и т.д.), макросы, а также средства, позволяющие задать правила оформления документов, их макеты (стили и шаблоны) и т.д. Использование полей Поле – это специальный код (набор инструкций), вставляемый в документ и предназначенный для размещения автоматически вычисляемой информации определенного вида в определенных местах документа. Поля динамичны, их значения можно обновлять («перевычислять»). Обновление происходит либо автоматически, либо по команде пользователя. В Word используются десятки полей различного типа. Некоторые поля просты в использовании, они вставляются с помощью соответствующих их типу команд (например, номера страниц, оглавления). Другие достаточно сложны, их использование требует знания навыков программирования. Над полями выполняется четыре операции: – вставка поля в документ (с помощью общей команды Вставка 4 Поле… или с помощью специальной команды для соответствующего типа поля (номеров страниц, даты и времени и т.п.)); – обновление поля (информации, вычисляемой полем, осуществляется командой Обновить поле, выполняемой в контекстном меню, вызываемом щелчком правой кнопки мыши по полю); – просмотр полей (значения и коды можно просмотреть, установив указатель мыши на поле и выполнив в его контекстном меню команду Коды/значения полей ); – переход к следующему полю можно выполнить, нажав клавишу F11, а к предыдущему – Shift+F11. При выполнении лабораторных работ уже использовались поля. В частности, вычисления в таблицах реализованы с помощью формул, вставленных в ячейки таблицы. Далее рассматривается команда слияния, которая реализована также через использование полей. Слияние документов Организация делопроизводства предполагает необходимость тиражирования документов, имеющих общую «основу», отличающихся лишь небольшими фрагментами текста (например, рассылка писем-уведомлений или приглашений всем клиентам фирмы, печать справок для целой группы лиц и т.п.). Для создания большого тиража какого-либо документа (письма, распоряжения, приказа и т.д.), все экземпляры которого отличаются только несколькими словами, можно использовать команду слияния, которая позволяет создать множество экземпляров документа на основе одного подготовленного образца (рис. 45). При выполнении команды слияния используются два документа: – основной документ, являющийся образцом, или макетом, с которого «печатается тираж»; – источник данных – документ, из которого выбирается информация для заполнения тех фрагментов документа, которыми различаются его копии. В качестве основного может использоваться документ, представляющий собой бланк, созданный на основе шаблона, наклейка и т.д. Источником данных может служить таблица, содержащаяся в документе Word, или внешняя база данных. Основной документ и источник данных могут быть созданы заранее или в ходе выполнения команды слияния. При выполнении команды слияния эти документы можно отредактировать. В основной документ, в те его места, где информация должна меняться в различных экземплярах, вставляются специальные поля, которые в ходе выполнения команды слияния будут заменяться информацией из источника данных. Каждое поле содержит информацию, позволяющую сопоставить его с данными из источника данных. Каждая строка таблицы, содержащейся в источнике данных, представляет собой запись, информация из которой служит для заполнения одного экземпляра, создаваемого на базе основного документа. Запись состоит из полей, каждое из которых сопоставляется с полем в основном документе: данные из поля в таблице при слиянии (объединении) вносятся в соответствующее поле экземпляра основного документа (рис. 1). Сопоставление производится по имени поля (имя содержится в коде поля в основном документе и в заголовке столбца таблицы в источнике данных). В более сложных случаях перед заполнением основного документа с помощью слияния можно произвести отбор данных, а при заполнении – сформировать значения полей в зависимости от заданных в команде условий (например, в приведенном примере можно было бы ввести еще одно поле, чтобы печатать текст «он» или «она», а не «он(а)», в зависимости от пола). Основной документ и источник данных могут быть подготовлены заранее. Использование этой команды рассматривается при выполнении лабораторной работы. Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 640; Нарушение авторского права страницы