This is topic Работа с БД в 6.07.7 in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


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

Posted by NestorIT (Участник № / Member № 4337) on :
 
Наблюдаю принеприятную картину - в ТМ 6.07.7 перестала работать выборка столбца/строки из БД при помощи CALL.ChGroupReq.

Создаем проект. В проекте - шаблон связи с БД, скажем База_данных#1 с подключением к БД Access, источник ODBC - recept1 (из вашего примера про работу с БД).
В этом шаблоне единственый запрос
code:
SELECT Nomer #ARG_000#, Parametr1 #ARG_001#, Parametr2 #ARG_002#, Parametr3 #ARG_003#, Parametr4 #ARG_004#, Parametr5 #ARG_005#
FROM Table1

и аргументы соответствующих типов (INT, STRING, REAL, REAL, REAL, REAL).
Далее, создаем шаблон экрана - Экран#1, на котором размещаем несколько ГЭ Текст с привязкой к аргументам экрана, скажем типа REAL.
Создаем узел RTM_1 и из шаблонов экрана и связи с БД перетаскиванием получаем соответствующие каналы CALL. На экране еще размещаем кнопку, при нажатии на которую в аргумент экрана DB (UINT) будет посылаться 65535, а сам аргумент привязываем к атрибуту In канала База_данных#1.
По количеству параметров шаблона связи с БД создаем каналы CALL.ChGroupReq с "Параметр=0" и десятком аргументов в каждом соотсветствующего типа (INT, STRING, REAL, REAL, REAL, REAL).
К аргументам канала База_данных#1 привязываем атрибут R каналов CALL.ChGroupReq.
Каналу, связанному с вызовом Экран#1, устанавливаем привязки аргументов к какому-либо из каналов CALL.ChGroupReq (тип REAL, раз уж шаблон экрана под REAL сделан был).
Вообщем все как всегда. НО при запуске профайлера, после посылки значения 65535 в канал БД - все зависает.

В <prj>.txt появляются записи типа
quote:

...
(11:54:43) WRN_RTM:wrong entry(g)
(11:54:44) WRN_RTM:wrong entry(g)
(11:54:44) WRN_RTM:wrong entry(g)
...

В tm6_log.txt
quote:

...
11:54:43 0016 00000032[7] Экран#1:1
11:54:44 0016 00000032[7] Экран#1:1
11:54:44 0016 00000032[7] Экран#1:1
...

Собственно как быть? Сохранился IDE TM6.07 - там такой проблемы нет. Можно ли где-нибудь скачать базовый МРВ 6.07, так как купленная коробка с 6.06.2 + upgrade до 6.07.7 проблемы не решает. Или есть иное, более разумное, чем откат на прежнюю версию решение?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В релизе 6.07.7 введен более строгий контроль соответствия привязок и типов данных привязываемых аргументов.
Сообщения в профайлере и в tm6_log.txt говорят о неверных привязках канала, вызывающего экран.
Если Ваша собственная проверка не позволит Вам выявить ошибку, присылайте проект на адрес техподдержки.
 
Posted by NestorIT (Участник № / Member № 4337) on :
 
Я уже неделю бьюсь. Дошел до создания указанного выше минимума. Буду признателен, если ткнете носом в ошибку. Проект отправил на hotline3@adastra.ru

Кстати, всякий раз приходится искать на форуме адрес ТП. Нынче так и не нашел - отправил на тот, через который общался ранее
 
Posted by NestorIT (Участник № / Member № 4337) on :
 
Спасибо, огромное!
Привести число строк в таблице в соответствие с числом привязанных аргументов у канала вызова экрана не всегда представляется возможным, так как количество строк в выборке БД чаще всего не известно, а вот решение с копированием при помощи Call.Move (параметр=4) в другой ChGroupReq, и привязкой уже его аргументов - работает!

Правда с двумя и более "столбцами" разного типа, скажем REAL и INT - такой фокус не проходит. Ошибок нет, но значения аргументов ChGroupReq (как копируемых, так и тех куда копируются) меняются непредсказуемым образом. В лучшем случае становятся нулевыми [Неодобрение / Frown]

Да, Call.Move использовал отдельный для каждого из столбцов.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2