Практическая работа 40. DDE
А. 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Рис. 6.1. Простейший пример DDE; данные, выводимые в файл В. 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() ' макрос в приложении WordDim intChan1 As Integer, intChan2 As Integer, intChan3 As IntegerDim intChan4 As Integer, strResp1 As Variant, strResp2 As VariantDim strResp3 As Variant, strResp4 As VariantintChan1 = DDEInitiate("MSAccessquot;, quot;A:\nin;TABLE Studentquot;)intChan2 = DDEInitiate(quot;MSAccessquot;, quot;A:\nin;TABLE Stipendiumquot;)Рис. 6.2. Таблица Pruefung Рис. 6.3. Таблица Student Рис. 6.4. Запрос Рис. 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 intChan2DDETerminate intChan3: DDETerminate intChan4Open "dde621.txt" For Output As #1Write #1, strResp1Close #1Open "dde622.txt" For Output As #1Write #1, strResp2Close #1Open "dde623.txt" For Output As #1Write #1, strResp3Close #1Open "dde624.txt" For Output As #1Write #1, strResp4Close #1End SubOLE При реализации обмена данными приложений данные/наборы данных могут представлять собой связанные или внедрeнные объекты. Связывание (Link) используется, если нужно, чтобы при изменении данных в исходном файле данные в другом файле также изменялись. Внедрение используется, если нужно использовать конечный файл (на другом компьютере) и нежелательно изменение данных в нeм при изменении исходных данных Связанный объект - это объект, созданный в одном файле и вставленный в другой файл с поддержкой связи между файлами; связанный объект не является частью файла, в который он вставлен. При обновлении исходного файла связанный объект автоматически обновляется. Внедрeнный объект является частью файла, в который он вставлен. При двойном щелчке на связанном объекте он открывается в приложении, в котором он был создан; при двойном щелчке на внедрeнном объекте появляется возможность редактирования его средствами текущего приложения.
|