Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Редактор проекта TRACE MODE 6 / » Как прочитать из файла в канал

   
Автор / Author Тема / Topic: Как прочитать из файла в канал
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Есть 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 | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вариант 1. Самый общий случай.
Использовать CALL.String и привязать соответствующий аргумент CALL.SQL к аргументу CALL.String. Значение этого аргумента можно менять в текстовом файле (см. описание канала CALL.String).

Вариант 2.
Создать для канала CALL.SQL файл формата *.dat (см.описание атрибутов 128 и 129 канала CALL).
В этом файле нужному строковому аргументу задать нужное значение. Организовать автоматическое подчитывание этого файла при запуске узла.
Если количество символов в аргументе превышает 4, привязать аргумент к текстовому атрибуту, например, к КОММЕНТАРИЮ.

Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Пробую 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#

Сообщения / Posts 10 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. WHERE
station = #station#

д.б.

WHERE
station = '#station#'

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

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

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

Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В аргументе CALL.SQL.station строка "bsu>", в CALL.String коорый читает из файла "bsu". Откуда то взялось ">".

Работает. Но в окне компоненты аргумент CALL.SQL.station показан как "bsu>", хотя в запрос передается "bsu"

Сообщения / Posts 10 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В
"bsu>"

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

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

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

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

Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2