Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5470 / 628 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 6:

Обмен данными

Аннотация: Рассматривается DDE - динамический обмен данными и следующий этап разработки в области обмена данными - OLE. Особый интерес представляет практическая работа 44 - передача данных между приложениями Access и Excel. Приводятся две практические работы, относящиеся к области ActiveX - технологии, обеспечивающей эффективную работу приложений типа клиент- сервер.

Продукты корпорации Microsoft поддерживают протокол динамического обмена данными - DDE (протокол - правила при коммуникациях). С использованием папки обмена CLIPBRD.EXE выполняются DDE-связи в компьютерной сети (стартует сетевая DDE-служба), при этом данные должны быть сделаны доступными - должен быть реализован общий доступ. В процессе обмена данными устанавливаются связи между папками обмена удалeнных компьютеров; данные буфера обмена должны находиться на страницах папки обмена. Такая связь может быть реализована и средствами Visual Basic. Приложения могут выполнять как роль клиента, запрашивающего и принимающего данные, так и роль сервера - источника данных.

Технология обмена данными между приложениями развита до такого уровня, что данные не нужно заново копировать - они после их изменения автоматически передаются через DDE-связь. OLE - следующий этап разработок в области обмена данных. Это технология связи программ, обеспечивающая приложениям совместное использование данных. Технология OLE поддерживается с помощью внедрённых и связанных объектов. Развитие OLE - это технология ActiveX.

DDE

Рассмотрим примеры использования Microsoft Access в роли сервера DDE для приложения-клиента, запрашивающего и принимающего даные по каналу связи DDE. Сеанс связи начинается с открытия канала связи; при этом используется функция DDEInitiate, в аргументе которой перечисляются: имя приложения (база данных Access), имя файла базы данных, имя таблицы; пример: intChan1 = DDEInitiate("MSAccess", "C:\Winnt\Profiles\Administrator\dde6;TABLE dde1")

После этого становится возможной передача данных в другое приложение по этому каналу. Для передачи требования на пересылку, например, текстовых данных из приложения-сервера по открытому каналу DDE используется функция DDERequest, в аргументе которой указывается номер канала связи и сформулирован запрос, пример: strResp1 = DDERequest(intChan1, "All"). После окончания передачи данных нужно вызвать в приложении-клиенте функцию DDETerminate для закрытия текущего канала обмена или функцию DDETerminateAll для закрытия всех каналов связи.

Практическая работа 40. DDE

40а. DDE. Простейший пример обмена данными

Задание: записать в файл результат запроса к данным таблицы базы данных (Access).

Порядок выполнения:

  1. создать базу данных (здесь - dde6), таблицу (здесь - dde1), сделать запрос, закрыть приложение Access,
  2. создать макрос в приложении Word, код макроса дан ниже,
  3. стартовать макроc; в результате его выполнения стартует закрытое ранее приложение Access,
  4. открыть файл dde61.txt (в редакторе Блокнот).
Sub dde6()' макрос в приложении Word,
Dim intChan1 As Integer ' канал связи
Dim strResp1 As Variant ' требование на запрос
' открыть канал связи
intChan1 = DDEInitiate("MSAccess",_
"C:\Winnt\Profiles\Administrator\dde6;TABLE dde1")
strResp1 = DDERequest(intChan1, "All") ' требование на запрос
DDETerminate intChan1 ' закрыть текущий канал связи
Open "dde61.txt" For Output As #1 ' открыть файл для записи
Write #1, strResp1 ' записать результат запроса
Close #1 ' закрыть файл
End Sub

Содержимое полученного файла dde61.txt - это результат запроса ("All"): вывести всeсодержимое таблицы базы данных, рис. 6.1.

Простейший пример DDE; данные, выводимые в файл

Рис. 6.1. Простейший пример DDE; данные, выводимые в файл

40в. DDE

Приводится аналогичный пример; создаются 4 таблицы: student, (рис. 6.2, рис. 6.3) stipendija, sessija, prikaz; выполняются 4 запроса (рис. 6.4, рис. 6.5), создается макрос в приложении Word (см. код, данный ниже), открываются 4 канала связи, результаты 4-х запросов по 4-м каналам связи выводятся в файлы dde621 - dde624. Пояснения к коду макроса:

  • All - вывести все данные из таблиц, включая имена полей,
  • FildNames,T - вывести список из 2-х строк, содержащий имена полей (первая строка) и их типы данных (вторая строка).
Sub dde62() ' макрос в приложении Word
Dim intChan1 As Integer, intChan2 As Integer, intChan3 As Integer
Dim intChan4 As Integer, strResp1 As Variant, strResp2 As Variant
Dim strResp3 As Variant, strResp4 As Variant
intChan1 = DDEInitiate("MSAccessquot;, quot;A:\nin;TABLE Studentquot;)
intChan2 = DDEInitiate(quot;MSAccessquot;, quot;A:\nin;TABLE Stipendiumquot;)
Таблица Pruefung

Рис. 6.2. Таблица Pruefung
Таблица Student

увеличить изображение
Рис. 6.3. Таблица Student
Результат запроса

Рис. 6.5. Результат запроса
intChan3 = DDEInitiate("MSAccess", "A:\nin;TABLE Pruefung")
intChan4 = DDEInitiate("MSAccess", "A:\nin;QUERY Befehl")
strResp1 = DDERequest(intChan1, "All")
strResp2 = DDERequest(intChan2, "All")
strResp3 = DDERequest(intChan3, "FieldNames;T")
strResp4 = DDERequest(intChan4, "All")
DDETerminate intChan1: DDETerminate intChan2
DDETerminate intChan3: DDETerminate intChan4
Open "dde621.txt" For Output As #1
Write #1, strResp1
Close #1
Open "dde622.txt" For Output As #1
Write #1, strResp2
Close #1
Open "dde623.txt" For Output As #1
Write #1, strResp3
Close #1
Open "dde624.txt" For Output As #1
Write #1, strResp4
Close #1
End Sub
антонина квасова
антонина квасова
Владимир Муратов
Владимир Муратов

По курсу Visual Basic где же взять материалы для практических работ? 

Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва