Отображение пустого или нулевого значения в текстовых полях SSRS - PullRequest
18 голосов
/ 09 августа 2010

Использование SSRS (2008) - наилучший способ обработки пустых или пустых значений и замены их чем-то другим для отображения. Совершенно очевидные решения

=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value)

Это работает, хотя это утомительно, я надеялся найти что-то вроде свойства EmptyText в текстовом поле, но, увы, ничего. Есть идеи? Должен ли я создать пользовательский элемент отчета из базы TextBox, который создает это свойство?

Ответы [ 9 ]

9 голосов
/ 31 декабря 2015
=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))

Используйте это выражение, чтобы получить ответ.

Здесь CStr - функция по умолчанию для обработки типов данных String.

6 голосов
/ 10 августа 2010

Вызов пользовательской функции?

http://msdn.microsoft.com/en-us/library/ms155798.aspx

Вы всегда можете поместить туда регистр stmt для обработки различных типов «пустых» данных

5 голосов
/ 08 мая 2012

Я бы не согласился с конвертацией на стороне сервера.Если вы сделаете это, он вернется как строковый тип, а не как тип даты со всем, что влечет за собой (например, он будет сортироваться как строка)

Мой принцип при работе с датами - сохранять их типизированными какдата до тех пор, как вы можете.

Если вы столкнулись с узким местом производительности на сервере отчетов, есть лучшие способы справиться с этим, чем поставить под угрозу вашу логику.

2 голосов
/ 10 августа 2010

Хотя, вероятно, не лучше, чем ваше решение, вы можете настроить свой T-SQL так, чтобы он возвращал тот же результат, используя COALESCE:

SELECT MyField = COALESCE(table.MyField, " NA")

Причина, по которой дополнительное пространство перед NA должно разрешить сортировкупоместите результаты NA наверху.Поскольку ваши данные могут отличаться, это может быть не лучшим вариантом.

0 голосов
/ 04 апреля 2017

Попробуйте это

=IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value)
0 голосов
/ 19 сентября 2013

У меня была похожая ситуация, но следующее сработало лучше для меня ..

=Iif(Fields!Sales_Diff.Value)>1,Fields!Sales_Diff.Value),"")
0 голосов
/ 19 апреля 2013

Мне не удалось заставить IsNothing() вести себя, и я не хотел создавать фиктивные строки в моем dataset (например, для заданного списка клиентов создайте фиктивный заказ за месяц) и заметил, что нулевые значения былиотображается как -247192.

И вот, используя это, работало, чтобы подавить его (по крайней мере, до тех пор, пока MSFT не изменит SSRS в лучшую сторону с 08R2), так что простите, но:

=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)
0 голосов
/ 22 ноября 2010

Либо в SQL, либо в коде отчета (согласно предложению функции чеснока Адольфа) * ​​1001 *

В данный момент я бы сделал это в отчете. У меня очень мало отчетов о занятом OLTP-сервере и перегруженном сервере отчетов. Если бы у меня был другой микс, я бы сделал это в SQL.

В любом случае приемлемо ...

0 голосов
/ 17 августа 2010

Я согласен выполнить замену на стороне SQL, но я бы использовал функцию ISNULL.

SELECT ISNULL(table.MyField, "NA") AS MyField

Обычно я выполняю как можно больше обработки данных на наших SQL-серверах и стараюсь как можно меньше манипулировать данными в SSRS. Это происходит главным образом потому, что мой SQL-сервер значительно мощнее моего SSRS-сервера.

...