Штатный SUM и NULL поле
vitaly_l
Винница, Украина
FastReport 3.22
У отчета EngineOptions ConvertNulls - false.
В таблице имеется поля CATEGORY (integer) и PERIOD_VAL (double)
В отчете, в бенде GroupFooter идет суммирование по категории с использованием полученной суммы в моей ф-ции:
Общее время по категории , (чч:мм:cc)
[Hours(SUM(<SysArc."PERIOD_VAL">,MasterData))]
Моя ф-ция Hours преобразует double в строку времени типа "12:30:59"
Передача подсчитанного агрегатной ф-цией SUM значения происходит в
событии отчета OnUserFunction:
MyReportUserFunction( const AnsiString MethodName, Variant &Params)
{
if(MethodName == "HOURS")
{
Variant Value = Params.GetElement(0);
if(Value.IsNull() || Value.IsEmpty())
return "Нет данных"; // при NULL значениях сюда не заходит. А надо!
else
{
double PeriodVal = Value;
return HoursToTimeStr(PeriodVal, true);
}
}
}
Все работает хорошо, если значения поле PERIOD_VAL не NULL. Но если NULL,
то моей ф-ции Hours передается 0. Т.е. Params.GetElement(0) не пустой.
Как узнать что SUM вернул NULL?
Заменить штатный SUM на свой? Или есть какой-то способ?
У отчета EngineOptions ConvertNulls - false.
В таблице имеется поля CATEGORY (integer) и PERIOD_VAL (double)
В отчете, в бенде GroupFooter идет суммирование по категории с использованием полученной суммы в моей ф-ции:
Общее время по категории , (чч:мм:cc)
[Hours(SUM(<SysArc."PERIOD_VAL">,MasterData))]
Моя ф-ция Hours преобразует double в строку времени типа "12:30:59"
Передача подсчитанного агрегатной ф-цией SUM значения происходит в
событии отчета OnUserFunction:
MyReportUserFunction( const AnsiString MethodName, Variant &Params)
{
if(MethodName == "HOURS")
{
Variant Value = Params.GetElement(0);
if(Value.IsNull() || Value.IsEmpty())
return "Нет данных"; // при NULL значениях сюда не заходит. А надо!
else
{
double PeriodVal = Value;
return HoursToTimeStr(PeriodVal, true);
}
}
}
Все работает хорошо, если значения поле PERIOD_VAL не NULL. Но если NULL,
то моей ф-ции Hours передается 0. Т.е. Params.GetElement(0) не пустой.
Как узнать что SUM вернул NULL?
Заменить штатный SUM на свой? Или есть какой-то способ?
Комментарии
Вместо
if(Value.IsNull() || Value.IsEmpty())
Поставил
if(Value == NULL)
Теперь на NULL значениях пишет "нет данных" как того хотелось.