Ситуация такая: нужно вывести на экран значение текстового поля базы данных (от 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 :