DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
Есть 2 компьютера с TM 6.09 с одинаковыми проектами. Каждый подключается к одной и той же удаленной БД. Запросы к БД вида
code:
SELECT * FROM Table WHERE comp = 'comp1'
или
code:
SELECT * FROM Table WHERE comp = 'comp2'
Вопрос. Как подставить аргумент comp1 или comp2 в аргумент запроса. Напрашивается мысль, что должен быть файлик из которого эту строку можно прочитать. Как прочитать из файла в канал?
Сообщения / Posts 10 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Вариант 1. Самый общий случай. Использовать CALL.String и привязать соответствующий аргумент CALL.SQL к аргументу CALL.String. Значение этого аргумента можно менять в текстовом файле (см. описание канала CALL.String).
Вариант 2. Создать для канала CALL.SQL файл формата *.dat (см.описание атрибутов 128 и 129 канала CALL). В этом файле нужному строковому аргументу задать нужное значение. Организовать автоматическое подчитывание этого файла при запуске узла. Если количество символов в аргументе превышает 4, привязать аргумент к текстовому атрибуту, например, к КОММЕНТАРИЮ.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
Пробую 1-й вариант. CALL.String из файла читает норамльно, в 1-й аргумент IN/OUT записывается "bsu".
Сделал CALL.SQLQuery
code:
SELECT txt #txt# FROM Table WHERE station = #station# ORDER BY id DESC
Два аргумента 1. txt | OUT | 2. station | IN | привязка к CALL.STRING аргументу в который пишется текст из файла
По задумке должен выполнять такой запрос
code:
SELECT txt FROM Table WHERE station = 'bsu' ORDER BY id DESC
DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
В аргументе CALL.SQL.station строка "bsu>", в CALL.String коорый читает из файла "bsu". Откуда то взялось ">".
Работает. Но в окне компоненты аргумент CALL.SQL.station показан как "bsu>", хотя в запрос передается "bsu"
Сообщения / Posts 10 | Из / From: РФ
| IP / IP: IP адрес / IP address |
символ ">" указывает на привязку к аргументу, а не к атрибуту канала.
Собственно текстовая константа, используемая в CALL.SQL.station, будет "bsu".
Надо смотреть текст в трассировщике.
Можно задать значение аргумента CALL.SQL.station - строковой константой (без привязок аргумента) и проверить исполнение SQL-запроса.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |