Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: ADilet от 04 Ноября 2021, 07:35:52

Название: Запись в БД текст по изменению 1 раз
Отправлено: ADilet от 04 Ноября 2021, 07:35:52
Здравствуйте, нужна помощь со скриптами
Надо сделать запись в БД текст
Когда условие срабатывает, скада записала дату и текст бд один раз.
У меня как условие срабатывает записывает каждую секунду.

Код: (delphi)
 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.
Название: Re: Запись в БД текст по изменению 1 раз0
Отправлено: Simple Scada от 04 Ноября 2021, 11:15:28
Здравствуйте.
В данном случае лучше использовать скрипт с типом события "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)" , добавив переменную "tr"(и при необходимости другие переменные), изменение которой необходимо отслеживать в список скрипта, как это описано по ссылке (https://simple-scada.com/help/script/changemulvar.html). Тогда скрипт будет выполняться только при изменении переменной, а не каждую секунду.
Код: (delphi)
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", то можно добавить их в список скрипта и чтобы скрипт был универсальным, код можно изменить следующим образом:
Код: (delphi)
begin
  if Variable.AsBool then
    WriteValueToTable;
end.
Тогда не нужно будет писать отдельный скрипт для каждой переменной.