Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование ИС.Часть1(DDE+буфер обмена+OLE)....doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
742.91 Кб
Скачать

1.1 Принципы динамического обмена данными

DDE (Dynamic Data Exchange )– установленный протокол обмена данными в реальном времени между приложениями Windows, несовместимыми с OLE2

Основные определения:

  • Процесс обмена информацией с использованием DDE называется сеансом связи DDE.

  • Приложение, начинающее сеанс связи, называется клиентом DDE.

  • Приложение, предоставляющее данные, называется сервером DDE.

Основными элементами сеанса связи DDE, называемыми транзакциями, являются:

  • Запрос клиента к серверу на начало сеанса связи

  • Запрос данных у сервера

  • Получение данных от сервера

  • Посылка данных серверу

  • Посылка команд серверу

  • Прекращение сеанса связи

На рис.1 приведена схема сеанса связи DDE. Пунктиром обозначены необязательные транзакции.

Рис.1

Обработка сообщений по протоколу DDE осуществляется Windows FIFO (first-in, first-out). Для поддержания нужного временного режима перемещения сообщений клиент может потребовать подтверждения сервером получения всех сообщений. Такой тип связей называется асинхронным. В синхронном сеансе связи клиент использует метод прерываний и посылает сразу несколько сообщений, а затем ожидает ответа. Если в течение одного периода прерывания ответ от сервера не получен, генерируется сообщение об ошибке.

Структура транзакций dde

В соответствии с протоколом DDE от сервера к клиенту и обратно могут передаваться текст, числа и реже графическая и специальная информация. При этом получаемые от сервера данные обрабатываются методами и кодом управления приложения-клиента.

При формировании запросов используется трехуровневая иерархия для идентификации необходимых данных:

  • Приложение (Servise Name). Обычно представляет собой имя выполняемого файла без расширения .exe (WINWORD, EXCEL, MSACCESS, CorelDRW, Pbrush и т.д.). Имя нужного приложения можно получить из контекстного меню значка приложения (Свойства – Версия - Внутреннее имя)

  • Документ (Topic). Указывает на имя файла (документа Word, книги Excel и пр.), содержащего требуемую информацию. Если приложение не использует файлов, то документ представляет собой строку, специфическую для данного приложения. Возможен также документ System (рассмотрен будет ниже)

  • Раздел данных (Item). Представляет собой фрагмент данных, содержащийся в указанном документе (имя закладки в документе Word, адрес диапазона ячеек Excel в формате R1C1, ссылку на имя поля в базе данных Access и пр.)

1.2. Транзакции dde

Транзакции DDE реализуются функциями и инструкциями DDE.

Функция DDEInitiate()

Функция DDEInitiate позволяет открыть канал сеанса DDE, обеспечивающий передачу данных между приложением-сервером и приложением-клиентом.

Синтаксис:

DDEInitiate(приложение, документ)

Функция возвращает номер канала связи (типа Long), который при необходимости используется другими транзакциями.

Функция DDE()

Функция DDE позволяет открыть сеанс динамического обмена данными с приложением-сервером, направить требование на прием данных из этого приложения и вывести полученные данные в элементе управления в форме или отчете приложения-клиента.

Функция DDE записывается в ячейку свойства Данные (ControlSource) следующих элементов управления в форме: поле, поле со списком, группа переключателей или флажок.

Синтаксис:

DDE(приложение, документ, раздел)

С элементами управления формы функция используется следующим образом.

  • Поле. Выводит содержимое раздела в поле. Например, содержимое ячейки Excel.

  • Поле со списком. Выводит список раздела. Например, содержимое диапазона ячеек Excel.

  • Группа переключателей. Числовое значение, возвращаемое функцией DDE, включает соответствующий переключатель (1 – первый, 2 – второй и т.д.)

  • Флажок. Если DDE возвращает 0, то флажок будет снят, иначе – установлен.

Функция DDERequest()

Функция DDERequest передает в приложение-сервер по открытому каналу связи требование на прием данных из указанного раздела.

Синтаксис:

DDERequest(канал, раздел)

DDERequest возвращает значение типа Variant, содержащее требуемые данные в виде строки.

Функция DDESend()

Передает из элемента управления в форме или отчете приложения-клиента данные приложению-серверу. Функция вводится в ячейку свойства Данные следующих элементов управления: поле, поле со списком, группа переключателей или флажок.

Синтаксис:

DDESend(приложение, документ, раздел, данные)

Инструкция DDEExequte

Инструкция передает по открытому каналу связи команду из приложения-клиента в приложение-сервер. Например, переданная в Excel команда New(Создать), позволяет создать новую электронную таблицу.

Синтаксис:

DDEExequte канал, команда

Аргумент команда представляет собой строковое выражение, задающее команду, принимаемую приложением-сервером.

Допустимые команды:

  • Имя макроса в базе данных

  • Макрокоманды VB, являющиеся методами объекта DoCmd

  • Макрокоманды OpenDetaBase, ClosedataBase.

Инструкция DDEPoke

Инструкция передает текст из приложения-клиента в приложение-сервер.

Синтаксис:

DDEPoke канал, раздел, данные

Инструкции DDETerminate и DDETerminateAll

Инструкция DDETerminate закрывает указанный канал связи.

Синтаксис:

DDETerminate канал

Инструкция DDETerminateAll закрывает все открытые каналы связи.

Синтаксис:

DDETerminateAll

Если открытых каналов связи нет, то вызов этих инструкций приводит в ошибке.

Сеанс связи организуется обычно по следующей схеме:

  1. Открывается сеанс связи (DDE)

  2. Открываются каналы связи (DDEInitiate)

  3. Выполняется обмен данными между клиентом и сервером (DDEExecute, DDEPoke, DDERequest, DDESend)

  4. Закрываются каналы связи (DDETerminate, DDETerminateAll)