Здравствуйте, нужна помощь со скриптами
Надо сделать запись в БД текст
Когда условие срабатывает, скада записала дату и текст бд один раз.
У меня как условие срабатывает записывает каждую секунду.
procedure WriteValueToTable;
var
aQuery: string;
begin
aQuery := 'INSERT INTO `info_archive` (`Time`, `State`)' +
'VALUES (' +
MySQLDateTime(Now, dttFull) + ', ' + // Конвертирует дату и время в строку в формате MySQL
QuotedStr(StateDoor.AsStr) +
')';
RunSQL(aQuery, nil, 0);
end;
begin
if tr.AsBool = true then
begin
WriteValueToTable;
end;
end.
Здравствуйте.
В данном случае лучше использовать скрипт с типом события "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)" , добавив переменную "tr"(и при необходимости другие переменные), изменение которой необходимо отслеживать в список скрипта, как это описано по ссылке (https://simple-scada.com/help/script/changemulvar.html). Тогда скрипт будет выполняться только при изменении переменной, а не каждую секунду.
procedure WriteValueToTable;
var
aQuery: string;
begin
aQuery :=
'INSERT INTO `info_archive` (`Time`, `State`) VALUES (' +
MySQLDateTime(Now, dttFull) + ', ' + // конвертирует дату и время в строку в формате MySQL
QuotedStr(StateDoor.AsStr) +
')';
RunSQL(aQuery, nil, 0);
end;
begin
if tr.AsBool then
WriteValueToTable;
end.
Если планируется использовать несколько таких "Boolean" переменных как "tr", то можно добавить их в список скрипта и чтобы скрипт был универсальным, код можно изменить следующим образом:
begin
if Variable.AsBool then
WriteValueToTable;
end.
Тогда не нужно будет писать отдельный скрипт для каждой переменной.