2016-12-14 3 views
1

이 문제는 SSRS에서 다루고 도움이 필요합니다.# 표현식에서 0으로 나누는 것을 피하기 위해 IIF를 사용한 후에도 # 오류가 발생했습니다.

텍스트 상자 167 또는 168에 0이있는 경우 총 텍스트 상자에서 0 또는 0.00을 반환하기 만하면됩니다. 두 필드의 ISNULL이 모두 적용됩니다. 텍스트 상자는 보고서의 통화 서식이 지정됩니다. 167과 168이 모두 0이 아니라면 오류가 발생하지만 # 오류가있는 경우 결과가 나타납니다. 이견있는 사람?

=IIF((ReportItems!Textbox167.Value > 0) AND (ReportItems!Textbox168.Value > 0) 
    ,CDEC(ReportItems!Textbox173.Value/ReportItems!Textbox167.Value) - 
    CDEC(ReportItems!Textbox176.Value/ReportItems!Textbox168.Value), 0) 

고마워요!

+0

:

귀하의 표현은 같을 것이다? – Anand

+0

플로트 번호를 사용하고 있습니까? – FLICKER

답변

1

여기서 문제는 IIF가 부울 식의 상태에 따라 조건식 만 평가되는 예제처럼 C#의 삼항 연산자와 다르다는 것입니다. 즉

이 : IIF 전에

=IIF(a, b, c) 

첫번째 평가합니다 a, b, c는 평가된다. 피해는 이미 IIF이 값을 보게 될 때까지 완료되었습니다.

대신 표현식 사용을 피하려고 시도하는 대신 divide 표현식에 전혀 0이 표시되지 않도록 배당금을 IIF 표현식으로 작성해야합니다.

2

IIF은 필요하지 않은 경우에도 두 가지 가능성을 모두 평가하므로 오류가 발생할 수 있습니다.

분모가 0이 아닌 경우 표현식을 평 가하고 분모가 0이면 0/1을 사용하는 것이 이론입니다. 그들이 NULL 값을 갖는 것이 가능

=IIF(ReportItems!Textbox167.Value = 0, 0, CDEC(ReportItems!Textbox173.Value)) 
/
IIF(ReportItems!Textbox167.Value = 0, 1, CDEC(ReportItems!Textbox167.Value)) 
- 
IIF(ReportItems!Textbox168.Value = 0, 0, CDEC(ReportItems!Textbox176.Value)) 
/
IIF(ReportItems!Textbox168.Value = 0, 1, CDEC(ReportItems!Textbox168.Value)) 
+0

완벽 ... 내 문제가 해결되었습니다. 감사!! – Kevin