Посмотрите пример "отчет по условию":
http://www.masterscada.ru/?additional_section_id=233
это примерно соответсвует вашему отчету.
Посмотрите пример "отчет по условию":
http://www.masterscada.ru/?additional_section_id=233
это примерно соответсвует вашему отчету.
Спасибо.
Спасибо, посмотрю.
Жизнь снова вернула к вопросу об агрегатных функциях в отчёте. Теперь система Win10 32бита , Скада - 3.8.0.58188 3.8(RT32ReleaseMax)_17_04_21_13_34. И опять не работают агрегатные функции FIRST, LAST для типов данных float, double. И изменение типа данных double (Nullable) на double теперь не помогает. Отчёт просто не строится и ошибок при компиляции не показывает. Может быть я что-то не так делаю? Работают ли функции функции FIRST, LAST для типов данных float, double в этой версии MasterScada? Досадно терять то, что раньше, в версии 3.6 работало... И просмотр данных в отчётах в версии 3.8 не работает, а, ведь, в версии 3.6 он прекрасно работал...
Работает.
Пришлите ваш проект (выполните Проект - Экспортировать), укажите путь к проблемному отчету.
Спасибо.
Годы идут, вопросы так и остаются.))) Снова пришлось воспользоваться агрегатными функциями в отчёте. И снова те же самые вопросы - как заставить работать агрегатные функции с типами отличными от string? Проект, для примера самый простейший - один объект, в нём одна переменная "вещественный двойной точности". Создаём отчёт для объекта с этой переменной. Создаём данные в отчёте на основе архива Мастерскада. Кидаем в данные нашу переменную. Тип переменной в отчёте получается double (Nullable). Выводим эту переменную на страницу отчёта. Отчёт строится - переменная выводится.
Создаём данные на основе других данных и указываем в них нашу переменную. Применяем в итогах агрегатную функцию Last, к примеру. Выводим её на страницу - отчёт не строится, а в Скаде появляется сообщение от ошибке:
"System.NotSupportedException: DataSet не поддерживает System.Nullable<>.
в System.Data.DataColumn..ctor(String columnName, Type dataType, String expr, MappingType type)
в System.Data.DataColumn..ctor(String columnName, Type dataType)"
Изменяем тип переменной в данных на основе других данных на double. После этого отчёт строится.
Вопрос-то в чём - в том, что нельзя изменить тип переменных в данных на основе архива мастерскада. Изменить-то его можно, но при закрытии скады и новом запуске он опять восстановится в double (Nullable). И применять к нему агрегатные функции будет нельзя. Надо создавать данные на основе других данных, добавлять в них результаты, выбирать функцию обработки... Получается какая-то двойная работа. Сначала перенеси данные в отчёт, а потом создай те же самые данные на основе других данных с типами без Nullable. Что удручает - что эти ухищрения в документации я не нашёл, хотя может плохо искал. Или я не понимаю Вашей документации. Но крови себе попортил много, пока хоть немного разобрался. Ранее мне тут предлагали использовать для отчёт тип string. Да - с ним агрегатные функции работают сразу, без прокладок в виде данных на основе других данных. Но, не очень это удобно иногда. Например, надо изменить разрядность вывода - надо в проекте менять, при преобразовании в тип string. А ещё, к примеру тип bool - его как использовать в отчёте? Заменить его каким-нибудь строковым эквивалентом? Не... ну понятно, что безногому и костыль в радость. Но, ведь, "красота спасёт мир" - и было бы здорово, если бы агрегатные функции в отчёте работали сразу после копирования в отчёт переменных из проекта.
Собственно, кроме этого пожелания вопросов нет, а то, что написано выше, написано на случай, "вдруг кому поможет" и сохранит время потерянное на выяснение особенностей работы отчёта.
Из вашего описания не понятно в чем именно у вас проблема.
Если у вас переменная типа Nullable, то получить ее значение можно через свойство Value
Спасибо.
В том, что агрегатные функции работают только с типами без Nullable. А при переносе переменной из проекта создаётся тип с Nullable. И изменить его нельзя. По Вашей документации - я переношу переменную в отчёт и могу с ней делать что угодно, в частности применять к ней агрегатные функции. А это не так. И описание того, что же сделать, чтобы агрегатные функции работали я не нашёл. Укажите ссылку на документ, прочитав который у меня сразу заработает отчёт с агрегатными функциями. Буду признателен за указание. Сам не нашёл.
Пример приложил
Если использовать источник "Данные на основе других данных", то да - в нем, у конкретной переменной нужно выставлять тип без Nullable.
А какая в конечном счете задача? Именно в этом случае чтобы найти последнее значение можно использовать у источника способ формирования "Итоговый" а у переменной - "Последнее значение".
Спасибо.