This is topic Как прочитать из файла в канал in forum Редактор проекта TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/32/t/000694.html

Posted by DmFM (Участник № / Member № 6479) on :
 
Есть 2 компьютера с TM 6.09 с одинаковыми проектами.
Каждый подключается к одной и той же удаленной БД. Запросы к БД вида
code:
 
SELECT * FROM Table WHERE comp = 'comp1'

или

code:
 
SELECT * FROM Table WHERE comp = 'comp2'

Вопрос. Как подставить аргумент comp1 или comp2 в аргумент запроса.
Напрашивается мысль, что должен быть файлик из которого эту строку можно прочитать. Как прочитать из файла в канал?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вариант 1. Самый общий случай.
Использовать CALL.String и привязать соответствующий аргумент CALL.SQL к аргументу CALL.String. Значение этого аргумента можно менять в текстовом файле (см. описание канала CALL.String).

Вариант 2.
Создать для канала CALL.SQL файл формата *.dat (см.описание атрибутов 128 и 129 канала CALL).
В этом файле нужному строковому аргументу задать нужное значение. Организовать автоматическое подчитывание этого файла при запуске узла.
Если количество символов в аргументе превышает 4, привязать аргумент к текстовому атрибуту, например, к КОММЕНТАРИЮ.
 
Posted by DmFM (Участник № / Member № 6479) on :
 
Пробую 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

Далее вывод поля txt в ГЭ "Текст из файла"

Не работает. А если заменить запрос на

code:
 
SELECT
txt #txt#
FROM
Table
ORDER BY id DESC

то работает.

Может кавычки не подставляются в строку station = #station#
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. WHERE
station = #station#

д.б.

WHERE
station = '#station#'

2. Надо проверить, что в аргументе CALL.SQL.station в реальном времени содержится именно то строковое выражение, которое Вы ожидаете.

3. Надо запустить трассировщик ODBC-драйвреа и посмотреть, как передается запрос и как выполняется.

4. "Далее вывод поля txt в ГЭ "Текст из файла"" - не понятно.
 
Posted by DmFM (Участник № / Member № 6479) on :
 
В аргументе CALL.SQL.station строка "bsu>", в CALL.String коорый читает из файла "bsu". Откуда то взялось ">".

Работает. Но в окне компоненты аргумент CALL.SQL.station показан как "bsu>", хотя в запрос передается "bsu"
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В
"bsu>"

символ ">" указывает на привязку к аргументу, а не к атрибуту канала.

Собственно текстовая константа, используемая в CALL.SQL.station, будет "bsu".

Надо смотреть текст в трассировщике.

Можно задать значение аргумента CALL.SQL.station - строковой константой (без привязок аргумента) и проверить исполнение SQL-запроса.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2