2012-01-12 4 views
1

멤버 이름을 접두사, 첫째, 중간, 마지막, 접미사 형식으로 표시하는 보고서가 있습니다. 보고서 코드는 다음과 같습니다. [name_prefix] [name_first] [name_middle] [name_last] [name_suffix]SSRS 보고서 : 필드가 null 인 경우 필드 사이의 여분의 공간

각 필드 항목은 사이에 하나의 공백이 있으며 중간 이름이있을 때 큰 역할을하지만 중간 이름 Null입니다. 이름과 성 사이에 두 공백이 렌더링됩니다. 나는이처럼 보이는 표정으로 문제를 해결 시도 :

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

또한 다음과 같이 할 수있는 간격을 조정 : [name_first] [name_middle] [name_last] 중간 이름과 성 필드 사이에 공간. 중간 이름이 있으면 이름 사이에 공백이 생기고 가운데 이름이 Null 인 경우 이름과 성 사이에 공백이 하나만 있으면됩니다. 중간 이름이 있으면 올바르게 렌더링되지만 중간 이름이 Null이면 여전히 여유 공간이 있습니다. ,

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

다시 같은 문제가 없을 때 중간 이름하지만 두 개의 공백이있는 곳에 잘 작동 : 그래서 나는이처럼 보이는 필드 사이에 공백없이 다른 방법을 시도했다. 전체 회원 이름을 연결하는 것을 고려해 봤지만 동일한 결과가 나타날 것이라고 생각합니다. Crystal Reports를 사용한 동일한 보고서는 첫 번째 방법을 사용하며 문제없이 작동합니다. 미리 감사드립니다.

답변

3

기본 데이터 소스에 따라 중간 이름이없는 경우 null이 아닌 빈 문자열로 처리 될 수 있습니다.

내가 다음처럼되고 발현을 개정 제안 :

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

좋은 테스트하는 필드 내의 문자열의 길이를 찾을 수있는 것은 :

=Len(Fields!fieldName.Value) 
+0

Mark, 0에서 1로 변경해야한다는 것을 제외하고는 솔루션이 완벽하게 작동합니다. 나는 계속 편집하여 게시물에 추가하고 답변을 수락했습니다. 차이점에 대한 이유는 테스트를 위해 사용한 데이터가 길이가 0이고 널이 아닌 문자열이기 때문입니다. 프로덕션 데이터베이스이므로 사용자가 중간 이름을 변경하지 않거나 필드를 비워두면 제어 할 수 없습니다. 내가 설명하지 않은 것. 다시 감사합니다! – PerPlexSystem

+0

@PerPlexSystem : 예, 원래는 <1' 또는'= 0' 중 하나를 의미했지만, 어떻게 든 그것들이 섞여 있습니다! 네가 일하게되어 기쁘다. :) –

0

첫 행에서 수행 한 작업이 정확하며 데이터베이스에서 중간 이름이 공백 인 것으로 의심됩니다. 그래서 그것이 두 배로 나타나는 이유입니다.

+0

공간이에있는 경우 필드는 존재하지 않는 중간 이름을 위해 우리는 이름과 성 사이에 * 3 개의 공백을 볼 것으로 예상합니다. –