This is topic Про сброс AsyncCollection in forum TRACE MODE 7 бесплатная базовая версия / TRACE MODE 7 free basic version at Форум TRACE MODE: техническая поддержка.


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

Posted by FreddyRost (Участник № / Member № 9711) on :
 
Организую последовательность SQL запросов средствами канала AsyncCollection. Необходимо организовать постраничное чтение записей из основной таблицы.
1. Читаю данные из основной таблицы во временную таблицу
2. Определяю количество записей во временной таблице. В аргумент запроса OUT_RecCount получаю количество записей
3. Если количество записей > 0, тогда обновляю данные на экране. Для этого в 3-ем шаге в параметр send_waitread убираю "значение по умолчанию" и линкую его к OUT_RecCount
4. Сбрасываю канал AsyncCollection:IN = 0

Проблема в том, что если записи в основной таблице "закончились", то согласно задумке AsyncCollection не выполняет 3-шаг (и выходит в timeout ((0, R)=3)). Если послать в (2,IN)=2, то последовательность не стартует. Я так понимаю, необходимо сбросить канал AsyncCollection ((2,IN)<-0).
Подскажите, как оптимальнее перезапустить последовательность? Без дополнительных кнопок для пользователя..
 
Posted by Nico (Участник № / Member № 5342) on :
 
- а зачем делать постраничное чтение таким странным
способом ?
- считать все что надо и вывести на экран
через встроенные окно мониторов
(Окно CALL.SQLQuery)
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Здравствуйте.
Канал CALL.AsyncCollection служит для пошагового исполнения рецептов (действий) с контролем времен выполнения шагов и контролем условий перехода.

Канал предполагается использовать в случаях, когда шаги априори нельзя "пропустить".
Если на одном из шагов возникла ситуация невозможности исполнить шаг, то процесс останавливается.
(канал так же можно настроить на предварительный анализ состояния каналов на достоверность, что бы весь процесс не был запущен при наличии проблем).

Вы правы, для запуска процесса необходимо подать 2 в атрибут 2,In (Входное значение) и для сброса процесс подать 0 в тот же атрибут. Для подачи двух команд потребуется две кнопки (или ГЭ Группа кнопок).

Вариант решения, который предложил Nico (считать все и вывести в окно Call.SQLQuery), значительно проще и удобнее.

[ 18.06.2024, 09:46: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2