Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Вопрос по отчетам  (Прочитано 1641 раз)

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Вопрос по отчетам
« : 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
не могу понять как избавиться от строк где одинаковое время колонок Начало и Конец.
Заранее спасибо!!!

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по отчетам
« Ответ #1 : 16 Февраля 2021, 16:37:18 »
Здравствуйте.

Структура данных зависит от типа источника. Принцип работы источников данных подробно описан здесь и здесь. Если не получается разобраться самостоятельно, то вышлите нам на support@simple-scada.com текущую версию проекта, мы напишем точную причину повторяющихся значений начала и конца.
« Изменён: 16 Февраля 2021, 23:09:48 от Simple_Scada »

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопрос по отчетам
« Ответ #2 : 17 Февраля 2021, 08:19:36 »
Подскажите пожалуйста, как написать выражение сравнения данных (DataTime) двух колонок одной строки для фильтра:
Если  Источник.Start = Источник.End то строка не выводится в отчет.

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопрос по отчетам
« Ответ #3 : 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

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Вопрос по отчетам
« Ответ #4 : 17 Февраля 2021, 10:01:56 »
Здравствуйте.

Видимо Вы используете старое руководство. Используйте пример из актуального руководства - см. пример №2 по ссылке.

Цитировать
как написать выражение сравнения данных (DataTime) двух колонок одной строки для фильтра:
Если  Источник.Start = Источник.End то строка не выводится в отчет.
Можно сравнивать дату/время также как числа. Не равно:
Код
Данные.Время1 != Данные.Время2
Равно:
Код
Данные.Время1 == Данные.Время2
Разница:
Код
Данные.Время1 - Данные.Время2
« Изменён: 17 Февраля 2021, 10:36:28 от Simple-Scada »

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопрос по отчетам
« Ответ #5 : 17 Февраля 2021, 10:48:19 »
Спасибо.
Цитировать
Видимо Вы используете старое руководство.
Что установилось со скадой, тем и пользуемся.
Цитировать
Подскажите пожалуйста, как написать выражение сравнения данных (DataTime) двух колонок одной строки для фильтра:
Если  Источник.Start = Источник.End то строка не выводится в отчет.
По аналогии сравнения строк
Код
PreviousIsNull(Данные, "Value") ? true : ((double)Previous(Данные, "Value") != (double)Данные.Value)

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопрос по отчетам
« Ответ #6 : 17 Февраля 2021, 13:09:27 »
Большое спасибо, разобрался.