Условие «iif» не работает с вычисляемым полем в SSRS - PullRequest
0 голосов
/ 08 апреля 2019

Для набора данных в отчетах SSRS я создал вычисляемое поле с выражением ниже, и оно работает нормально.

=(Fields!SalesAmount.Value+Fields!TaxAmt.Value)*Fields!Factor.Value

Но иногда мы можем иметь значение фактора равным 0. Поэтому я изменил вышеприведенное выражение следующим образом:

=iif(Fields!Factor.Value = 0,(Fields!SalesAmount.Value+Fields!TaxAmt.Value)*1,(Fields!SalesAmount.Value+Fields!TaxAmt.Value)*Fields!Factor.Value)

Но это бросает ниже исключения: Выражение Value для textrun ‘Textbox2.Paragraphs [0] .TextRuns [0]’ использует статистическую функцию для данных различных типов данных. Агрегирующие функции, отличные от First, Last, Previous, Count и CountDistinct, могут агрегировать данные только одного типа данных.

Может кто-нибудь помочь решить эту проблему?

1 Ответ

0 голосов
/ 08 апреля 2019

Похоже, что это не проблема с IIF, но типы данных не соответствуют друг другу. У меня есть несколько предложений, чтобы попробовать. Во-первых, вы можете попытаться умножить истинное значение на 1,0, так как я предполагаю, что типы данных являются десятичными или двойными. Другой вариант - использовать что-то вроде CInt, чтобы преобразовать значение в правильный тип данных. CInt, скорее всего, не подходит для десятичных чисел, поскольку округляет любые десятичные значения, но идея та же. Поскольку ваше выражение не использует никаких агрегатов и использует только обычные операторы, оно должно относиться к чему-то другому, чем IIF.

Вот полезная ссылка , чтобы разбить типы данных и методы преобразования. Выберите наиболее подходящее преобразование и примените его к 1.

РЕДАКТИРОВАТЬ: Выражение должно быть следующим.

=iif(Fields!Factor.Value = 0.00,
(Fields!SalesAmount.Value+Fields!TaxAmt.Value)*CDbl(1),
(Fields!SalesAmount.Value+Fields!TaxAmt.Value)*Fields!Factor.Value) 
...