Отчет SSRS: дополнительное пространство между полями, если поле пустое - PullRequest
1 голос
/ 13 января 2012

У меня есть отчет, который отображает имя члена в формате: префикс, первый, средний, последний, суффикс.Код отчета выглядит следующим образом: [name_prefix] [name_first] [name_middle] [name_last] [name_suffix]

Каждая запись поля имеет один пробел между ними и прекрасно работает, когда элемент имеет отчество, но когдаотчество равно нулю два пробела рендеринга между именем и фамилией.Я попытался решить проблему с помощью выражения, которое выглядит следующим образом:

=IIF(IsNothing(Fields!name_middle.Value),"",Fields!name_middle.Value & " ")

Я также изменил интервал, чтобы он выглядел так: [name_first] [name_middle] [name_last] без пробела между серединой и фамилиейполе.Я надеялся, что если будет второе имя, между именами будут пробелы, а когда второе имя будет пустым, между именем и фамилией будет только один пробел.Когда есть отчество, оно отображается правильно, но если отчество имеет значение Null, остается еще один пробел.Поэтому я попробовал другой метод без пробелов между полями, который выглядит следующим образом:

=IIF(IsNothing(Fields!name_middle.Value)," "," " & Fields!name_middle.Value & " ")

Опять та же проблема, отлично работает, когда есть второе имя, но два пробела, когда его нет.Я рассмотрел объединение всего имени участника, но думаю, что получу тот же результат.Тот же отчет, что и в Crystal Reports, использует первый метод и работает без проблем.Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 13 января 2012

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

Я предлагаю изменить выражение так:

=IIF(IsNothing(Fields!name_middle.Value) OR Len(Fields!name_middle.Value) < 1,
     "",Fields!name_middle.Value & " ")

Хороший тест для определения длины строки в поле:

=Len(Fields!fieldName.Value)
0 голосов
/ 13 января 2012

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

...