Пожалуйста, включите JavaScript для просмотра этого сайта.

Отчеты Simple-Scada

История: Примеры отчетов

Отчет по архивным данным строковой переменной

Пред. Вверх След. Еще

В Simple-Scada можно архивировать только численные переменные, строковые переменные не архивируются. Для использования архивных данных строковой переменной в отчете, возможны два варианта:

1. Создать собственную таблицу в БД с колонками [`id`, `timestamp`, `value`] и записывать в нее значение строковой переменной из скрипта, который выполняется по изменению этой переменной, например:

var
  aQuery: string;
begin
  { формируем запрос на вставку текущего значения переменной в таблицу БД `my_table` }
  aQuery := 'INSERT INTO `my_table` (`ID`, `Timestamp`, `Value`) VALUES (' + 
    IntToStr(Variable.ID) + ', ' +
    'NOW(), ' + 
    QuotedStr(Variable.AsStr) + 
    ');';
 
  { отправляем запрос на выполнение }
  RunSQL(aQuery, nil0);
end.

В результате будет сформирована таблица `my_table`, в которой хранятся все изменения строковой переменной. Эту таблицу можно вывести в отчет используя пользовательский источник данных.

 

2. Данный вариант подойдет, если различных строковых значений переменной мало. Допустим, строковая переменная принимает только три значения: "один", "два" и "три". Тогда можно создать отдельную целочисленную переменную (например с именем vrStrAsInt), включить у нее архивацию по-изменению и в скрипте по изменению записывать в нее уникальное число, соответствующее значению строковой переменной:

begin
  if myStr.Value = 'один' then
    vrStrAsInt.Value := 1
  else
  if myStr.Value = 'два' then
    vrStrAsInt.Value := 2
  else
  if myStr.Value = 'три' then
    vrStrAsInt.Value := 3;
end.

Затем в отчет можно вывести переменную vrStrAsInt используя обычный источник данных "по-изменению". При этом, в отчете нужно будет выполнить преобразование численного значения обратно в строковое. Это можно сделать через условия (см. скриншоты ниже). Т.е., данный способ заключается в том, чтобы создать числовой эквивалент каждому значению строковой переменной и архивировать его, а затем в отчете снова привести его к строке. Добавляем условие для преобразования первого значения в строку:

 

Далее, по аналогии добавляем условия для преобразования остальных значений: