This is topic Вывод текста (строки) in forum Общие вопросы / Common questions at Форум TRACE MODE: техническая поддержка.


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

Posted by RomanUI (Участник № / Member № 4022) on :
 
Ситуация такая: нужно вывести на экран значение текстового поля базы данных (от 0 до 255 символов). В запросе создал аргумент типа "string" и привязал его к ГЭ "Текст". Выводится максимум первые 4 символа.

Каким образом можно вывести полную строку?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Не привязанный к атрибуту канал аргумент типа STRING в ТМ6 имеет максимальный размер 4 символа. Передавайте строку через комментарий любого канала. Правда атрибут "Комментарий" максимум 39 символов. Длиннее нет. Тут уже обсуждалась тема на днях по отображению длинных строк - смотрите последние темы по форуму: http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000761.html

[ 23.08.2011, 10:19: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Данила (Участник № / Member № 5356) on :
 
Делаю по справке "Запись длинных строк".

Длинные (до 64 байт) строки могут быть записаны в аргументы каналов CALL.STRING, ... Аргументы не должны иметь привязок и иметь тип данных STRING.

для отображения значения аргумента с помощью ГЭ Текст нужно к аргументу экрана (тип данных должен быть STRING) привязать атрибут 1,A канала и задать формат Generic.

Создал канал Call два аргумента в нем типа стринг, в поле значение по умолчанию 'сообщение1', 'сообщение2' во втором.
ГЭ текст привязал к аргументу экрану типа стринг привязанный к аппаратному значению CALL, маняю реальноре значение CALL, выдает 4 первых символа.

Справка
"При связи аргументов STRING каналов CALL можно передать не более четырех символов, если ни один из этих аргументов не привязан к строковому атрибуту произвольного канала."

Привязываю аргументы канала CALL к созданному еще одному каналу CALL2 комментарию канала.

В таком случае вообще не выводит сообщение.

Где я что не сделал или что перепутал? Подскажите пожалуста.
 
Posted by Nico (Участник № / Member № 5342) on :
 
Канал CALL.string сохраняет значения аргументов и считывает их при старте узла из файла (имя файла совпадает с именем канала).

[ 22.08.2011, 11:48: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Реализовывать нужно первым способом. Если после старта МРВ ввести новые значения аргументов в канал CALL.STRING, то они должны отобразиться на экране.

Чтобы при старте МРВ в ГЭ "Текст" отображалось более 4-х символов, можно создать текстовый файл с именем, совпадающим с именем канала CALL.STRING и в нем задать значения, которые будут отображаться при старте узла (смотрите раздел справочной системы "Запись длинных строк").
 
Posted by Данила (Участник № / Member № 5356) on :
 
Спасибо, при старте МРВ, вводе новых значений все работает.
 
Posted by Данила (Участник № / Member № 5356) on :
 
возникла проблема при добавлении в программу двух каналов CALL.String по 10 аргументов в каждом. В программе используется вызов пользовательского блока FBD в котором как раз происходит вывод значений в аргументы каналов Call.String. При запуске профайлера программа выключается, состояние программы "1", она сразу выключена. Есть какое то ограничение на использование Call.String в программе?
 
Posted by Данила (Участник № / Member № 5356) on :
 
Тип аргументов CALL.STRING в программе OUT в канале In/Out. Сделал аргументы в программе In/Out как в канале, все равно программа выключается, пробовал установить состояние в "0", сбрасывает в "1".
 
Posted by Nico (Участник № / Member № 5342) on :
 
под все аргументы не может быть выделено памяти больше, чем 4k в Windows
STRING (WCHAR*) – 256
в tm6log сообщение <имя программы> 0 32 3
 
Posted by Данила (Участник № / Member № 5356) on :
 
Какой может быть тогда выход, писать две программы?
 
Posted by Nico (Участник № / Member № 5342) on :
 
Например разбить на 10 программ
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Подскажите, пожалуйста. Необходимо выводить на экран рецепт из 30 компонентов. Создана таблица из ГЭ "Текст". По примерам, для вывода длинных строк
аргументы БД типа string привязаны к атрибуту "комментарий". При запросе по номеру строки таблицы
во все 30 ГЭ "Текст" выводится значение последнего столбца. Что я делаю неправильно?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Для этого надо использовать ГЭ "База данных" из группы "Таблицы".
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Спасибо, но по ТЗ заказчика напротив каждого компонента рецепта создан ГЭ Текст в который вводиться вес этого компонента. Поэтому ГЭ "База данных" не подходит. Кроме того если убрать привязку аргументов к атрибуту "комментарий" то данные выводятся правильно но не более 4 символов.
Как вывести из БД значение текстового поля нескольских столбцов, каждое в свой ГЭ "Текст" более 4 символов?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Все аргументы STRING SQL-запроса должны быть привязаны к атрибутам КОММЕНТАРИЙ разных каналов.
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Правильно ли я понимаю? Нужно создать 30 каналов БД и в каждой запрос на свой аргумент привязанный к "коментарию".
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нет.
SQL-запрос должен быть 1.
STRING-аргументы могут быть привязаны к атрибутам КОММЕНТАРИЙ любых каналов.
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Спасибо. Все получилось.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2