1

Я не могу понять, почему эти выражения Всего не работают ...SSRS графа или Sum выражение

Я пытаюсь добавить любые клетки, которые имеют дату позже, чем сегодня, с любыми клетками, которые имеют «Не Reqd ", а затем разделите это на количество строк, чтобы получить процент.

Все, что я получаю, это #Error.

Эти выражения, которые я пробовал:

=SUM(IIf(Fields!Jetter_Trng.Value >Today OR 
Fields!Jetter_Trng.Value = "Not Reqd",1,0)))/(Count(Fields!Jetter_Trng.Value) 

и

=Count(IIf(Fields!Jetter_Trng.Value >Today OR 
Fields!Jetter_Trng.Value = "Not Reqd",1,Nothing)))/(Count(Fields!Jetter_Trng.Value) 

"Не Reqd" строка пришло из выражения, которое изменяет дату (01/01/1950) на «Не требуется». Может быть, это Мессинг вещи:

=iif(Fields!Jetter_Trng.Value = "01/01/1950", "Not Reqd", Fields!Jetter_Trng.Value) 

Текущее рабочее выражение (не ищет "Не Reqd") является:

=COUNT(IIF(Fields!Jetter_Trng.Value>Today,1,Nothing)))/(Count(Fields!Name.Value)) 

Я немного потерял ...

+1

Что такого типа данных 'Fields! Jetter_Trng.Value', как и в первом выражении вы используете его как дату, строку и числовое число в то же время – Jonnus

ответ

0

несколько примечаний к вашему выражению в настоящее время

  • Jetter_Trng представляет собой строку, представляющую либо дата или «Не требуется». Вы не можете сравнивать строки с датами, не бросая их к типу даты первого использования CDate()

  • Количество скобок (( и )) не совпадают

корень вашей проблемы, хотя заключается в том, что вы используете Jetter_Trng для возврата либо Date, либо значения «Not Reqd».

Когда SSRS пытается оценить выражение, он делает все это одновременно. Он не следует по пути поиска ответа и игнорирует другие пути. Поэтому, когда вы пытаетесь не сравнить

Fields!Jetter_Trng.Value >Today 

Это сравнение строки с датой, и бросали ошибку, так как это значит, ничего

"Not Reqd" > Today 

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

Ваши варианты в

  • Использование двух полей - дата и флаг, указывающий, не требуется, или
  • Используйте одно поле - но есть «неверную дату» (01/01/2100 возможно) что вы можете тогда рассматривать как значение «Не Reqd» и проверить, меньше ли текущая дата (которая всегда будет)

Используя второй вариант здесь, вы можете использовать следующее выражение для создания желаемый расчет

=sum(iif(CDate(Fields!Jetter_Trng.Value) > Today, 1, 0))/
Count(Fields!Jetter_Trng.Value) 

Что бы оценить этот набор данных следующего

enter image description here

+0

Эй, Джоннус - это исчерпывающий ответ - я очень этому благодарен. Эти призрачные скобки - я посмотрю на это позже. Я взял на себя инициативу - у меня уже была «недействительная дата», так как я менял 1/1/50 на «Not Reqd» с выражением. Это, как вы говорите, не будет работать, поскольку я смешиваю даты и строки. Поэтому я вернулся к тому, чтобы оставить недействительную дату, использовал ваше выражение, и оно работает. Спасибо, что показал мне это - я был очень смущен и раздражен! – ttratl