Связывание и внедрение объектов
Итак, OLE — это протокол, позволяющий создавать составные документы, которые включают в себя документы, созданные другими приложениями. Документ, который включает в себя другие документы, называется документом-контейнером OLE. В данном случае документами-контейнерами являются формы и отчеты Access. Документы, которые включаются в форму или отчет, называются документами-источниками или объектами OLE. Объектами OLE могут быть документы Word, Excel, рисунки, созданные в одном из графических редакторов, например Paint, видеоролики (файлы с расширением avi), звуковые файлы с расширением wav. Объекты OLE отличаются от объектов Automation, о которых мы будем говорить ниже, тем, что они являются документами, получаемыми с помощью приложения, а не частью его модели объектов.
Объекты OLE могут быть либо внедрены в документ-контейнер, либо связаны с ним. Приложение, которое поставляет объекты для внедрения и связывания, называется сервером OLE. Внедренный объект представляет собой копию документа-источника, который сохраняется вместе с формой или отчетом. Связанный объект хранится в отдельном файле, и документ-контейнер содержит только указатель на исходный файл объекта. Если кто-либо обновляет исходный файл объекта, то обновляется и представление объекта в составном документе. Коварство связанных объектов заключается в том, что при изменении местоположения исходного файла относительно составного документа, либо при изменении местоположения составного документа таким образом, что исходный файл становится недоступным, связь разрывается. Внедренные объекты всегда доступны, однако частое их использование приводит к непомерному увеличению файла составного документа.
Выполнив внедрение или связывание объекта OLE, можно легко активизировать из документа Access приложение, которому этот объект принадлежит. Для этого достаточно дважды щелкнуть левой кнопкой мыши по внедренному объекту, после чего объект может быть изменен. Когда же активизированное приложение будет закрыто, в документе-контейнере отразится (а в случае внедрения — сохранится) внесенное изменение.
Связывание и внедрение объектов OLE сравниваются в табл. 15.1.
Параметр | Связывание | Внедрение |
Число файлов | Необходимо поддерживать не менее двух файлов: связанного объекта (такого как лист Excel) и составного документа, использующего этот обьект (такого, как Word). Можно установить связь так, что при обновлении исходного файла объекта автоматически обновляется файл составного документа. | Поддерживать необходимо лишь один файл составного документа, содержащего внедренный объект. |
Создание объектов | Объект создается копированием его из исходного документа и вставкой связи в документ назначения. | Объект создается либо копированием и вставкой, либо перетаскиванием с помощью мыши из исходного файла в файл составного документа. |
Обновление объектов | Один и тот же исходный документ могут использовать несколько составных документов. При изменении исходного документа обновление объекта во всех контейнерах, которые его используют, может происходить автоматически. | Необходимо отразить изменения внедренного объекта в каждом составном документе. |
Формат, исполь- зуемый в документе-контейнере | В зависимости от природы самого объекта и возможностей контейнера, можно связывать его в различных форматах. Например, можно связать рабочий лист Excel с документом Word как графический объект, форматированный текст, неформатированный текст, рисунок, растровую картинку. | Все внедренные объекты появляются в составном документе как графические. |
Поддержка объектов | Необходимо отслеживать соответствие путей к файлу исходного объекта в составном документе | Все, что необходимо — это поддерживать документ, содержащий внедренный обьект. |
Размер объекта | Поскольку исходный документ существует в отдельном файле, составной документ лишь весьма незначительно увеличивает свой размер при связывании его с файлом исходного документа | Внедренный обьект должен содержать все необходимые данные внутри составного документа, поэтому размер последнего значительно увеличивается при внедрении. |
Управление объектами | Используйте команду Правка, Связи (Edit, Links). Например, можно установить связь таким образом, чтобы можно было вручную или автоматически обновлять объект, временно блокировать связь, разрывать или восстанавливать ее. | Большинство объектов можно преобразовать в составном документе так, чтобы они существовали как рисунки. Вернуть их в исходный формат внедренных объектов практически никогда нельзя. |
Таблица 15.1. Сравнение характеристик связывания и внедрения