Обмен данными с внешними приложениями с использованием механизмов DDE и ODBC
111
Далее при формировании запроса имена этих каналов используются
в качестве имен полей базы, а величины реальных значений вводятся
в запрос после ключевого слова VALUES.
Пример.
Рассмотрим пример формирования запросов к базе данных
СУБД Paradox и записи полученных данных в каналы.
Пусть имя базы данных будет test, а имя зарегистрированного
для нее пользователя – user. Данные в этой базе хранятся в таблице
Tab, которая имеет пять полей: field1, field2, field3, field4 и field5.
Необходимо решить следующие задачи:
1) периодически запрашивать значения полей field2 и field3. Ус-
ловием поиска записи для чтения этих данных является равенство
поля field1 100;
2) записывать значения двух каналов в поля field4 и field5, соз-
давая при этом новые записи в базе.
Для решения этих задач следует создать в директории проекта
конфигурационный файл odbc.cfg, содержащий следующий текст:
DSN=test
USER=user
SQL1=SELECT * FROM
HEADER1=Tab
FOOTER1=WHERE field1=100
SQL2=INSERT INTO Tab
Кроме того, в базе каналов потребуется создать два канала для
управления обменом, два канала для получения данных из базы test
и два канала для передачи данных в эту базу. Каналы для получения
данных из базы должны иметь имена field2 и field3, подтип ПУСТОЙ
и дополнение к подтипу in_null, а для передачи – имена field4 и field5,
подтип ПУСТОЙ и дополнение к подтипу SQL_для_вставки.
Для управления запросом данных из базы необходимо исполь-
зовать один канал. Его тип должен быть OUTPUT, подтип – ПУСТОЙ и
дополнение к подтипу – SQL_выполнить. Значения настроек I0, I1
зададим равными 0, настройки C2 – 1. Зададим каналу имя ЗАПРОС.
В такой конфигурации при посылке в канал ЗАПРОС значения 1
будет сформирован следующий SQL-запрос:
SELECT * FROM Tab WHERE field1=100
С помощью этого запроса будут прочитаны данные из базы. При
этом выбираются для чтения только те записи, где поле field1 равно
100. Значения из первой записи полученной выборки будут присвоены
входным значениям каналов field2 и field3.
Для управления передачей данных в базу необходимо ввести
один канал. Его тип должен быть OUTPUT, подтип – ПУСТОЙ, допол-
нение к подтипу – SQL_выполнить. Значения настроек I0 и I1 зада-
дим равными 1. Присвоим каналу имя ПЕРЕДАЧА. Установим для ка-
налов field4 и field5 значения настроек I0 и I1, равными 1. При изме-
нении значения канала ПЕРЕДАЧА будет сформирован следующий
SQL-запрос: