This is topic Однократное выполнение канала Call in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Здравствуйте! возможно простейший вопрос, но подскажите, как выполнить однократное выполнение канала Call? конкретно, необходимо, по факту возникновения определенного события, записывать значения в БД. событие отслеживаю программой с циклом в 1 сек. после возникновения события программа вызывает канал Call с БД и записываются сотни значений с периодичностью (насколько я понял) канала вызова, но надо выполнить всего одну запись, после чего дальше отслеживать появление события.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
SQL-запрос выполняется всегда однократно. Собственно вызов канала CALL.SQL состоит в передаче в него номера запроса из привязанного шаблона. После выполнения запроса значение канала сбрасывается. Новый запрос будет реализован только при подаче в этот канал номера запроса. При запросы большого объема могут возникнуть проблемы с ограничениями на длину SQL-запроса в конкретном ODBC-драйвере.
Posted by Hip67 (Участник № / Member № 4427) on :
хм. тогда получается, что это не SQL-запрос выполняется несколько раз, а программа вызывает несколько SQL-запросов с определенной периодичностью, заданной в канале вызова программы?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Выходит, так.
Posted by Hip67 (Участник № / Member № 4427) on :
выяснил как это совершить. использую программу LD, которая по положительному переходу события отправляет на вход вызова БД единицу в 1 такт. но теперь появилась другая проблема: в канал Time приходят секунды, он в реальном атрибуте переводит их в час:мин:сек. как это значение записать в базу в таком же виде?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если Вы зададите в SQL-запросе аргумент типа Date & Time и свяжете его с атрибутом РЕАЛЬНОЕ канала TIME, то это значение в формате строки и будет передано в БД.
Posted by Hip67 (Участник № / Member № 4427) on :
дело в том, что аргумент типа Date & Time связанный с реальным атрибутом канала TIME передает в БД следующее "1970-01-01 03:02:26", тогда как в профайлере в реальном текут обычные часы и показывают "00:02:26". пробовал ставить Р канала в любое значение, от 0 до 6. результат тот же.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Штатно в БД нет типа данных "Временной интервал" (без даты). Реально в канале TIME временной интервал хранится в виде целого числа. Только при отображении его средствами Trace Mode 6 формируется строка указанного вами вида. Видимо, Вам придется либо средствами SQL-запроса, либо непосредственно в БД, либо программно в Trace Mode 6 преобразовывать временной интервал (целое числол секунд) в строку формата ВРЕМЯ.
Posted by Romсheg (Участник № / Member № 3792) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Штатно в БД нет типа данных "Временной интервал" (без даты).
А весь мир-то и не знает. Скажу по секрету - у всех СУБД есть не только тип данных временной интервал, но и куча других, которые позволяют хранить "дату-время" и ее производные. И не только хранить, но и обрабатывать прямо в в тексте SQL-запроса! 2Hip67: Настоятельно рекомендую открыть справочную систему на ту СУБД, с которой вы планируете работать, в части разделов SQL-синтаксиса. Например у СУБД MySQL по части работы с метками даты, времени и прочими временными параметрами - функций аж 58 штук! Такого можно с временными форматами вертеть прямо в тексте запроса... Если будут вопросы - стучите мне в аську, подскажу, чем смогу. Уже приходилось пару собак скушать на женитьбе ТМ6 и реляционных СУБД. Аська есть здесь на форуме в моих постах - через поиск смотрите.