Отчет SSRS: дополнительное пространство между полями, когда поле NULL

StackOverflow https://stackoverflow.com/questions/8841983

Вопрос

У меня есть отчет, в котором отображается имя участника в формате: Префикс, сначала, середина, последнего, суффикс. Код отчета выглядит следующим образом: [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)

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top