Отчет SSRS: дополнительное пространство между полями, когда поле NULL
-
27-10-2019 - |
Вопрос
У меня есть отчет, в котором отображается имя участника в формате: Префикс, сначала, середина, последнего, суффикс. Код отчета выглядит следующим образом: [name_prefix] [name_first] [name_middle] [name_last] [name_suffix
Каждая запись в поле имеет одно пространство между и отлично работает, когда у участника есть второе имя, но когда второе имя имеет NULL Два места, визуализируя между именами и фамилиями. Я попытался решить проблему с выражением, которое выглядит так:
=IIF(IsNothing(Fields!name_middle.Value),"",Fields!name_middle.Value & " ")
Я также настроил интервал, чтобы выглядеть так: [name_first] [name_middle] [name_last] без места между средним и фамилией. Я надеялся, что если было второе имя, между именами было бы пробелы, и когда второе имя было нулевым, тогда только одно пространство между именем и фамилии. Когда есть второе имя, оно отображается правильно, но если второе имя ноль, все еще есть дополнительное пространство. Поэтому я попробовал еще один метод без пробелов между полями, которые выглядят так:
=IIF(IsNothing(Fields!name_middle.Value)," "," " & Fields!name_middle.Value & " ")
Опять же, та же проблема, отлично работает там, где есть второе имя, но два места, когда нет. Я рассмотрел объединение всего имени участника, но я думаю, что у меня будет такой же результат. В том же отчете, что и Crystal Reports, используется первый метод, и он работает без проблем. Заранее спасибо.
Решение
В зависимости от основного источника данных, возможно, что там, где нет второго имени, его рассматриваются как пустая строка, а не как нулевая.
Я предлагаю изменить выражение, чтобы быть похожим на следующее:
=IIF(IsNothing(Fields!name_middle.Value) OR Len(Fields!name_middle.Value) < 1,
"",Fields!name_middle.Value & " ")
Хороший тест, чтобы найти длину строки в поле:
=Len(Fields!fieldName.Value)
Другие советы
То, что вы сделали на первой строке, верно, и я подозреваю, что вы получаете второе имя из базы данных, которая является пространством; Вот почему это кажется двойным.