Подтвердить что ты не робот

Отображение пустой или нулевой величины в текстовых полях SSRS

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))

С помощью этого выражения вы можете получить ответ.

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

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

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

=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)

Ответ 8

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

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

Ответ 9

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

=Iif(Fields!Sales_Diff.Value)>1,Fields!Sales_Diff.Value),"")