2017-03-02 6 views
0

나는 지금 당장이 문제를 다루려고 노력해 왔지만 나는 그걸 따라 잡을 수 없다. 여기서 여러 가지 질문을 검토했지만 아무도 정확한 문제가 없습니다. 그래서 나는 여기있는 누군가가 도울 수 있기를 바란다.SSRS 식에서 다중 AND 및 OR을 결합하는 방법?

SSMS에서 완벽하게 실행되는 쿼리가 있습니다. 그러나이 쿼리는 보고서에 제공됩니다. 보고서에는 런타임에 사용자가 제공하는 시작 날짜와 종료 날짜의 두 가지 매개 변수가 있습니다. 나는이 날짜들에 대해 일련의 수표를 조사해야하며 여러 기준 중 하나를 충족시키는 기록만을 끌어 와야합니다.

필자는이 작업을 필터에서 수행하고 각 조건에 대해 하나의 필터 만 추가하려고했습니다. 그러나 필터 간의 기본 동작은 AND이며, 복잡한 필터간에 OR을 수행해야합니다. 그래서 저는 온라인에서 예를 찾아 타이핑을 시작했습니다.

OR의 양쪽에있는 표현은 단독으로 사용할 때 작동합니다. 그러나 OR 연산자와 결합하자마자 OR의 앞면과 일치하는 레코드 만 반환하지만 뒷부분과 일치하는 레코드는 포함되지 않습니다.

역학 CRM 2015에 대한 보고서이며, 나는 여기에 비주얼 스튜디오 2010

을 사용하고 내가 보고서에 뒀다 필터의 스크린 샷입니다 : 여기 Screenshot of Filter

내부 식입니다 이 필터 :

=((Fields!xyz_StartDateNewStudent.Value <> Nothing) AND (Fields!xyz_StartDateNewStudent.Value >= Parameters!StartDate.Value) AND (Fields!xyz_StartDateNewStudent.Value <= Parameters!EndDate.Value)) Or ((Fields!xyz_StartDateCarryoverStudent.Value <> Nothing) AND (Fields!xyz_StartDateCarryoverStudent.Value <= Parameters!StartDate.Value) AND (Fields!xyz_GraduationDate.Value <> Nothing) AND (Fields!xyz_GraduationDate.Value <= Parameters!EndDate.Value)) 

내 OR이 방정식의 양쪽 끝에서 작동하지 않는 이유는 무엇입니까?

답변

2

불행히도 SSRS 표현식은 부울 논리를 싫어합니다. 당신은 IIF를 사용해야합니다 :

+0

감사합니다, 하노버! 코드 (배치 된 괄호)를 사용하여 약간의 연주를 한 다음, 두 가지 요구 사항을 만족시키는 날짜 범위를 입력했는지 확인한 후, 예상대로이 작업을 수행한다고 생각합니다. –

+0

필터 EXPR!!!! '= IIF ((필드 mids_StartDateNewStudent.Value <>의 경우 Nothing) AND (필드 mids_StartDateNewStudent.Value> = 매개 변수 StartDate.Value) AND (필드 mids_StartDateNewStudent.Value <= 매개 변수 종료 날짜!. 값) 또는 ((필드! mids_StartDateCarryoverStudent.Value <>의 경우 Nothing) AND (필드! mids_StartDateCarryoverStudent.Value <= 매개 변수! StartDate.Value) AND (필드! mids_GraduationDate.Value <>의 경우 Nothing) AND (필드! mids_GraduationDate .Value <= Parameters! EndDate.Value)) , True, False) ' –

+0

그냥 생각하는 -이게 제대로 작동하는거야? 'Fields! mids_GraduationDate.Value <> Nothing'. 나는 아무것도 비교하지 않는 것에 대해 기억하고있는 것처럼 보입니다. 대신에 NOT ISNOTHING (Fields! mids_GraduationDate.Value)를 사용해야 할 것입니다. 누락 된 항목이 있으면 결과를 확인하십시오. –