Неправильно считается Sum
FR 4.12.6. Есть бэнд Footer, в котором считаются итоги по DetailData:
Вычислить правильную сумму помогает вот такая конструкция:
[SUM(<dsetRequest."PRICE_RESULT">,DetailData1)]
Но сумма почему-то в нем всегда целая и меньше реальной суммы на некоторое значение. Этот же код в подвале группы работает корректно.Вычислить правильную сумму помогает вот такая конструкция:
[SUM(<dsetRequest."PRICE_RESULT"> + 0,DetailData1)]
В чем может быть дело и как обойтись без +0?
Комментарии
Выяснил корень проблемы - такое случается, если поле имеет тип NUMERIC(18,2) и хранится как BCD. Сделал в запросе CAST поля к NUMERIC(9,2) и проблема исчезла.
Тогда почему в GroupFooter работает корректно?
SUM(<dsetReport."ON_ACCOUNT_OF_CREDIT"> + 0)
Явная ошибка в интерпритаторе выражений.
Похожая проблема была в 2.5 при вычислении с BCD и BigInt, там я правил в исходниках определение типа переменной от типа поля. В текущей версии с ходу разобраться не получилось, а досконально разбираться в логике работы нет желания.
А что выставлено по умолчанию в опциях FBPLus sSQLINT64ToBCD и psUseLargeIntField?