Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: sakhref от 19 Декабря 2018, 10:53:39

Название: Отчеты. Суммирование колонки.
Отправлено: sakhref от 19 Декабря 2018, 10:53:39
Имеется таблица вида:
времяминимальноемаксимальноемаксимальное-минимальное
12:0050150100

4 столбец содержит выражение
Код
{(double)Данные.Максимальное - (double)Данные.Минимальное}
Как просуммировать 4 столбец и вывести как итог на каждой странице и в конце отчета?
Название: Re: Отчеты. Суммирование колонки.
Отправлено: Timothy Clement от 19 Декабря 2018, 14:44:06
Добавьте в источник "Новую рассчитываемую колонку" с названием diff например, значение которой Данные.Максимальное - Данные.Минимальное. diff выводите вместо текущего выражения 4й колонки, и итог соответственно по ней.
Название: Re: Отчеты. Суммирование колонки.
Отправлено: Simple-Scada от 20 Декабря 2018, 16:13:27
Можно обойтись без рассчитываемой колонки, просто в ячейке итога вписать сумму для разности двух колонок, например:
Код
{SumD(DataДанные, (Данные.Температура - Данные.Уровень))}
Название: Re: Отчеты. Суммирование колонки.
Отправлено: sakhref от 23 Декабря 2018, 03:14:27
В случае закрытия программы минимальным значением на любом периоде будет 0, в результате мах-мин=мах.  Подскажите как организовать замену нулевого минимального значения на значение в начале периода или любое предыдущее ненулевое значение?
Название: Re: Отчеты. Суммирование колонки.
Отправлено: sakhref от 23 Декабря 2018, 04:00:36
Или лучше на предыдущее максимальное значение
Название: Re: Отчеты. Суммирование колонки.
Отправлено: Simple-Scada от 23 Декабря 2018, 23:07:28
sakhref, выделите ячейку в бэнде "Данные" (которая отвечает за вывод минимального значения). Нажмите на верхней панели кнопку "Условия". Далее "Добавить условие -> Условное выделение". И задайте следующие параметры выделения: Значение - > Числовой -> Данные.Минимальное -> равно -> 0, флажок "Присвоить выражение" и выражение Previous(Данные,"Максимальное") . Теперь вместо нулей в колонке "Минимальное" будет отображаться предыдущее максимальное значение.
Во вложении пример для другого отчета, но суть та же.
Название: Re: Отчеты. Суммирование колонки.
Отправлено: sakhref от 24 Декабря 2018, 04:18:23
sakhref, выделите ячейку в бэнде "Данные" (которая отвечает за вывод минимального значения). Нажмите на верхней панели кнопку "Условия". Далее "Добавить условие -> Условное выделение". И задайте следующие параметры выделения: Значение - > Числовой -> Данные.Минимальное -> равно -> 0, флажок "Присвоить выражение" и выражение Previous(Данные,"Максимальное") . Теперь вместо нулей в колонке "Минимальное" будет отображаться предыдущее максимальное значение.
Во вложении пример для другого отчета, но суть та же.
Сделал как вы написали и еще в ячейку разности сделал условие с присвоением выражения
Код
Данные.Максимальное - Previous(Данные,"Максимальное")
считает правильно(за исключением, когда в первом интервале 0, а появляются они из-за отсутствия предыдущих значений), только теперь итог считается не верно, так как он суммирует значения независимо от условий.
Код
{SumD(DataДанные, (Данные.Температура - Данные.Уровень))}
Подскажите какое условие добавить или выражение изменить.
Название: Re: Отчеты. Суммирование колонки.
Отправлено: Simple-Scada от 24 Декабря 2018, 15:42:11
В таком случае проще всего проверять условия через свой код. Т.е. удалить Условное выделение с присвоением значения, которое Вы добавили ранее. Затем:
Код: (c#)
/* если текущее значение равно 0, то подменяем его предыдущим максимальным */
if (Round(double.Parse(e.Value)) == 0)
  if (!PreviousIsNull(Данные, "Максимальное"))
    e.Value = Previous(Данные, "Максимальное").ToString();

/* прибавляем значение в переменную vrTotal */
vrTotal += double.Parse(e.Value);
Теперь при построении отчета в переменную vrTotal будут просуммированы все значения по колонке "Данные.Минимальное" c учетом условия подмены 0. Значение переменной vrTotal можно вынести в любое место отчета, например в итог отчета. Применять функции вычисления итогов (как SumD и др.) не требуется.
Аналогично можно подсчитать любые итоги с учетом условий. Т.е. условия и подмена значений переносятся в код. Расчет суммы также делается в коде и суммируются значения уже после выполнения условий.

Название: Re: Отчеты. Суммирование колонки.
Отправлено: sakhref от 25 Декабря 2018, 08:11:20
Спасибо.