Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Djakov от 16 Февраля 2021, 14:57:05

Название: Вопрос по отчетам
Отправлено: Djakov от 16 Февраля 2021, 14:57:05
Здравствуйте!
Помогите решить проблему. В отчете есть три колонки (DataTime):
   Начало    Конец    Разница
   8:00        9:00       1:00
   9:01        9:01       0:00
   9:15        9:15       0:00
   9:30        9:55       0:25
не могу понять как избавиться от строк где одинаковое время колонок Начало и Конец.
Заранее спасибо!!!
Название: Re: Вопрос по отчетам
Отправлено: Simple-Scada от 16 Февраля 2021, 16:37:18
Здравствуйте.

Структура данных зависит от типа источника. Принцип работы источников данных подробно описан здесь (https://simple-scada.com/help/report/periodicsourcework.html) и здесь (https://simple-scada.com/help/report/changesourcework.html). Если не получается разобраться самостоятельно, то вышлите нам на support@simple-scada.com текущую версию проекта, мы напишем точную причину повторяющихся значений начала и конца.
Название: Re: Вопрос по отчетам
Отправлено: Djakov от 17 Февраля 2021, 08:19:36
Подскажите пожалуйста, как написать выражение сравнения данных (DataTime) двух колонок одной строки для фильтра:
Если  Источник.Start = Источник.End то строка не выводится в отчет.
Название: Re: Вопрос по отчетам
Отправлено: Djakov от 17 Февраля 2021, 08:34:25
И еще вопрос.
В справке есть пример:
Блокировка кнопки на время построения отчета
Допустим, имеется кнопка, по нажатию на которую строится отчет. Требуется блокировать кнопку на время построения отчета для предотвращения повторных нажатий. Для решения этой задачи на событие OnClick кнопки нужно написать такой код:

Код
begin
  { блокируем кнопку, чтобы ее нельзя было нажать повторно }
  Button1.Enabled := False; 
   
  { строим отчет и отмечаем его пользовательской отметкой равной 777 }
  ReportView(GetClientName, 'Мой отчет', rptNoPrint, 777);
end.

Далее, создадим новый скрипт с типом события "Отчет построен" и следующим кодом:

Код
begin
  if rbUserID = 777 then      // если наш отчет с отметкой 777 построился, то
    Button1.Enabled := True;  // разблокируем кнопку
end.

Почему то не работает. При наборе ReportView выдает варианты: ReportBuild и ReportBuildEx. Версия Scada 2.3.6.12
Название: Re: Вопрос по отчетам
Отправлено: Simple_Scada от 17 Февраля 2021, 10:01:56
Здравствуйте.

Видимо Вы используете старое руководство. Используйте пример из актуального руководства - см. пример №2 по ссылке (https://simple-scada.com/help/script/report-built.html).

Цитировать
как написать выражение сравнения данных (DataTime) двух колонок одной строки для фильтра:
Если  Источник.Start = Источник.End то строка не выводится в отчет.
Можно сравнивать дату/время также как числа. Не равно:
Код
Данные.Время1 != Данные.Время2
Равно:
Код
Данные.Время1 == Данные.Время2
Разница:
Код
Данные.Время1 - Данные.Время2
Название: Re: Вопрос по отчетам
Отправлено: Djakov от 17 Февраля 2021, 10:48:19
Спасибо.
Цитировать
Видимо Вы используете старое руководство.
Что установилось со скадой, тем и пользуемся.
Цитировать
Подскажите пожалуйста, как написать выражение сравнения данных (DataTime) двух колонок одной строки для фильтра:
Если  Источник.Start = Источник.End то строка не выводится в отчет.
По аналогии сравнения строк
Код
PreviousIsNull(Данные, "Value") ? true : ((double)Previous(Данные, "Value") != (double)Данные.Value)
Название: Re: Вопрос по отчетам
Отправлено: Djakov от 17 Февраля 2021, 13:09:27
Большое спасибо, разобрался.