Короткі відомости про використання Ассеss як сервераDDE

 

Microsoft Access підтримує протокол динамічного обміну даними (DDE, dynamic data exchange), виконуючи роль як додатка, що приймає дані (клієнта), так і джерела даних (сервера). Наприклад, база даних Microsoft Access може бути сервером для додатка Microsoft Word, що виступає як клієнт, який приймає дані по каналу зв’язку DDE.

Зазначимо, що даний підрозділ має на меті лише ознайомлення з використанням SQL для організації динамічного обміну даними.

Для того щоб працювати з об’єктами іншого додатка з Microsoft Access, слід використовувати механізм програмування об’єктів. Можна використовувати також вбудований інструментарій додатків.

Сеанс зв’язку DDE між клієнтом і сервером відкривається для конкретного документа. Документ може бути або файлом даних у форматі, який підтримується додатком-сервером, або бути системним документом, що вміщує інформацію про сам додаток-сервер. Під час сеансу зв’язку, відкритого для конкретного документа, можлива передача даних тільки з розділу даних, зв’язаного з вказаним документом.

Припустимо, наприклад, що виконується додаток Microsoft Word для Windows, в документ якого потрібно вставити дані з конкретної бази даних Microsoft Access. Сеанс зв’язку DDE з Microsoft Access починається з відкриття канала зв’язку DDE за допомогою функції DDEInitiate і зазначення в якості документа імені файла бази даних. Після цього стає можливою передача даних в Microsoft Word по вказаному каналу.

Сеанс зв’язку DDE між клієнтом і сервером відкривається для конкретного документа. В якості сервера DDE Microsoft Access підтримує наступні документи:

· документ System (системний);

· ім’я файла бази даних (документ базаДаних);

· ім’я таблиці (документ ім’яТаблиці);

· ім’я запита (документ ім’яЗапита);

· інструкція SQL Microsoft Access (документ інструкціSQL).

В загальному випадку, DDE це узгоджений протокол обміну даними між додатками, що працюють в середовищі Windows. Для розробки останнього використовують у програмах на мові VB відповідні інструкції та функції, перелік яких наведено нижче.

Перелік функцій і інструкціїй DDE:

¨ Функція DDE

¨ Инструкция DDEExecute

¨ Функція DDEInitiate

¨ Инструкция DDEPoke

¨ Функція DDERequest

¨ Функція DDESend

¨ Инструкция DDETerminate

¨ Инструкция DDETerminateAll

Кожна інструкція чи функція має своє призначення. Наприклад функція DDE дозволяє відкрити сеанс динамічного обміну даними (DDE) з іншим додатком, передати вимогу на приймання даних із вказаного додатка та вивести отримані дані в елементі управління в формі чи звіті.

Синтаксис

 

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

 

Функція DDE використовує наступні аргументи.

 

Аргументи Опис
Приложение Рядковий вираз, який визначає додаток, що приймає участь в сеансі DDE. Для додатків, що працюють в середовищі Microsoft Windows, аргумент приложение задає ім’я файла .EXE (без розширення .EXE). Наприклад, для відкриття канала зв’язку DDE с Microsoft Excel слід вказати "Excel" в аргументі приложение.
Документ Рядковий вираз, що вказує ім’я документа, який приймається додатком. В аргументі документ як правило вказують документ або файл даних.
Раздел Рядковий вираз, що вказує ім’я розділу даних, який приймається додатком.

 

Після відкриття сеанса обміну даними по протоколу DDE для передачі команд з додатка-клієнта в додаток сервер використовують інструкцію DDEExecute. Як сервер DDE Microsoft Access приймає будь-яку з перерахованих нижче команд:

¨ · Ім’я макроса в поточній базі даних.

¨ · Будь-яка макрокоманда, яка може бути виконана в програмі Visual Basic за допомогою одного з методів об’єкта DoCmd.

¨ · Макрокоманди OpenDatabase і CloseDatabase.

Викликана в додатку-клієнті Функція DDERequest передає вимогу на пересилання текстових даних з додатка-сервера по відкритому каналу DDE.

Для пересилання даних з додатка-клієнта в додаток-сервер слід викликати функцію DDEPoke. Після того як передача даних відбудеться слід викликати в додатку-клієнті функцію DDETerminate для закриття поточного канала обміну даними DDE або функцію DDETerminateAll для закриття усіх відкритих каналів.

Наприклад, для додатка Word для Windows, що використовує Microsoft Access в якості сервера DDE, можна створити макрос на мові Visual Basic додатка. Але розгляд таких можливостей виходить за межі нашої теми, тому для прикладу текст коду вказано у додатку В.

Якщо значенням аргумента Документ є базаДаних, то тоді підтримуються наступні імена розділів:

Розділ Результат
TableList Список таблиць
QueryList Список запитів.
FormList Список форм.
ReportList Список звітів.
MacroList Список макросів.
ModuleList Список модулів.

 

Якщо потрібно доступ до даних наступних розділів:

¨ TABLE ім’яТаблиці,

¨ QUERY ім’яЗапита

¨ SQLім’яІнструкціїSQL,

то потрібно застосовувати відповідний синтаксис:

 

¨ ім’яБазиДаних; TABLE ім’яТаблиці

¨ ім’яБазиДаних; QUERY ім’яЗапита

¨ ім’яБазиДаних; SQL [ім’яІнструкціїSQL],

де

Аргумент Опис
ім’яБазиДаних Ім’я бази даних, якій належить таблиця чи запит, або до якої відноситься Інструкція SQL. Наприклад, (C:\Msoffice\Access\Samples\Борей.mdb) Після імені бази даних необхідно поставити крапку з комою (;).
ім’яТаблиці Ім’я існуючого таблиці.
Ім’яЗапита Ім’я існуючого запита.
ІнструкціяSQL Допустима інструкція SQL до 256 символів, яка завершується крапкою з комою. Для створення інструкціїSQL з довжиною, що перевищує 256 символів, слід опустити даний аргумент і використовувати кілька інструкцій DDEPoke.

 

Інструкція DDEPoke дозволяє передати текст з додатка-клієнта в додаток-сервер по відкритому каналу динамичіного обміну даними (DDE).

Наприклад, якщо відкрито канал зв’язку DDE між Microsoft Access і Microsoft Excel, інструкція DDEPoke дозволяє передати текст з бази даних Microsoft Access в електронную таблицю Microsoft Excel.

 

Синтаксис:

 

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

 

Інструкція DDEPoke використовує наступні аргументи:

 

Аргумент Описание
канал Номер канала, ціле значення, що повертається функцією DDEInitiate.
раздел Рядковий вираз, що вміщує ім’я розділу даних і приймається додатком, та задається в функції DDEInitiate.
данные Ряд даних, що передаються у додаток.

 

Допустимі значення аргумента раздел визначаються іменами додатка і документа, що вказані при відкриванні канала. Наприклад, розділом може бути діапазон комірок електронної таблиці Microsoft Excel.

Рядок данные повинен передаватися в текстовому форматі. Інші формати при передачі даних не підтримуються.

Аргумент канал повинен представляти ціле число, що співпадає з номером відкритого канала. Якщо вказати інше значення, то буде виникати помилка.

Для того щоб працювати з об’єктами іншого додатка з Microsoft Access, слід використовувати механізм програмування об’єктів.

Приклад 6.3.1.Використання інструкції SQL у програмі Visual Basiс.

В програмі Visual Basic інструкція SQL будується за допомогою інструкцій DDEPoke, після чого надаються результати даного запита.

intChan1 = DDEInitiate("MSAccess", "Борей;SQL")DDEPoke intChan1, "SQLText", "SELECT *"DDEPoke intChan1, "SQLText", " FROM Заказы"DDEPoke intChan1, "SQLText", " WHERE [Стоимость доставки] > 100;"strResponse = DDERequest(intChan1, "NextRow")DDETerminate intChan1

 

$Вказати критерій вибору даних в прикладі 6.3.1.

В наступній таблиці перераховано допустимі імена розділів для документів TABLE ім’яТаблиці, QUERY ім’яЗапита і SQL ІнструкціяSQL.

 

Розділ Результат
All Всі дані з таблиці, включаючи імена полів.
Data Вміст рядків даних без імен полів.
FieldNames Один рядок з іменами полів.
FieldNames;T Список з двох рядків, що включає імена полів (перший рядок) і їх типи даних (другий рядок).

 

Нижче надається список повертаємих значень і відповідних типів даних:

Значение Тип даних
Невірний тип даних.
True/False (не пусте Null значення)
Однобайтове ціле без знака.
Двобайтове ціле зі наком (Integer).
Чотирьохбайтове ціле зі знаком (Long).
Восьмибайтове число зі знаком (Currency).
Чотирьохбайтове ціле з плаваючою крапкою (Single).
Восьмибайтове число з плаваючою крапкою подвійної точності (Double)
Дата/час.
Двійкові дані, не більше 256 байт.
Текст в кодах ANSI без врахування регистра символів, не більше 256 байт (Text).
Довге двійкове значення (об’єкт OLE).
Довге текстове значення (тип Memo).
NextRow Дані з наступного запису таблиці або запита. При відкриванні канала NextRow повертає вміст першого запису. Якщо поточний запис є останнім, то виклик NextRow приводить до помилки.
PrevRow Дані з попереднього запису таблиці або запита. Якщо PrevRow є першим викликом на новому каналі, то повертається вміст останнього запису таблиці або запита. Якщо поточним є перший запис, виклик PrevRow приводить до помилки.
FirstRow Дані з першого запису таблиці або запита.
LastRow Дані з останнього запису таблиці або запита.
FieldCount Число полів в таблиці або запиті.
SQLText Інструкція SQL, що надає таблицю або запит. Для таблиць даний аргумент повертає інструкцію SQL виду "SELECT * FROM ім’яТаблиці;".
SQLText;n Інструкція SQL, що надає таблицю або запит, розбиті на частини по n символів, де n є цілим числом, що не превщує 256. Припустимо, наприклад, що запит надається наступною інструкциєю SQL: "SELECT * FROM Заказы;" Якщо вказати розділ у вигляді "SQLText;7", то повертаються наступні частини інструкції, які розмежовуються символами табуляції: "SELECT ""* FROM ""Заказы;"

Висновки:

¨ Microsoft Access підтримує протокол динамічного обміну даними (DDE, dynamic data exchange), виконуючи роль як додатка, що приймає дані (клієнта), так і джерела даних (сервера). Наприклад, база даних Microsoft Access може бути сервером для додатка Microsoft Word, що виступає як клієнт, який приймає дані по каналу зв’язку DDE.

¨ Для того щоб працювати з об’єктами іншого додатка з Microsoft Access, слід використовувати механізм програмування об’єктів.

¨ Документ може бути або файлом даних у форматі, який підтримується додатком-сервером, або бути системним документом, що вміщує інформацію про сам додаток-сервер.

¨ Під час сеанса зв’язку, відкритого для конкретного документа, можлива передача даних тільки з розділу даних, зв’язаного з вказаним документом.

¨ Сеанс зв’язку DDE з Microsoft Access починається з відкриття канала зв’язку DDE за допомогою функції DDEInitiate і зазначення в якості документа імені файла бази даних. Після цього стає можливою передача даних ( наприклад, до Microsoft Word )по вказаному каналу.

 

 


 

Лабораторні роботи

 

 

Лабораторна робота №1