2017-03-27 2 views
0

SSRS의 기둥 형 차트에 데이터를 표시하려고 Microsoft Dynamics GP를 사용하고 있습니다. 아래는 내가 사용하는 쿼리는 SSRS에서 일련의 속성 나는 값 필드에 다음을 추가 한에서 SSRS 합계 식 오류 일 경우

SELECT RTRIM(S.CUSTNMBR) 'Customer ID', RTRIM(C.CUSTNAME) 'Customer Name', S.SOPTYPE, 
CONVERT(varchar(4), YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE)) AS 'YEAR QUARTER', 
S.DOCDATE, S.DOCID,SL.QUANTITY 
FROM SOP30200 S INNER JOIN SOP30300 SL ON S.SOPNUMBE = SL.SOPNUMBE 
INNER JOIN IV00101 IV ON SL.ITEMNMBR = IV.ITEMNMBR 
INNER JOIN RM00101 C ON S.CUSTNMBR = C.CUSTNMBR 
WHERE S.VOIDSTTS = 0 AND IV.ITMCLSCD NOT IN ('NON INV','TRAINING','LABOR') 

를 시작하는 것입니다.

=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV" 
OR Fields!DOCID.Value = "RMAINV", Fields!QUANTITY.Value, 0)) 

보고서를 미리 볼 때 차트에 데이터가 없습니다. 차트의 경우 기둥 형 차트를 사용하고 있습니다. 어떤 아이디어?

추가 정보 : 위의 내용을 명확하게하기. 사용 된 식은 차트 데이터의 값입니다. 디자인 모드에서 열을 마우스 오른쪽 버튼으로 클릭하면 계열 속성을 선택할 수있는 옵션이 표시됩니다.

차트에서 작업중인 데이터 요소의 그림으로 연결하십시오. 변환 + (VARCHAR (4), YEAR (S.DOCDATE)) + 'Q'를 CONVERT S.CUSTNMBR, C.CUSTNAME BY

SELECT RTRIM(S.CUSTNMBR) 'Customer ID', RTRIM(C.CUSTNAME) 'Customer Name', CONVERT(varchar(4), YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE)) AS 'YEAR QUARTER', 
SUM(iif(S.SOPTYPE = 3 AND S.DOCID = 'INV' OR S.DOCID = 'RMAINV', SL.QUANTITY, 0)) 'QUANTITY' 
FROM SOP30200 S INNER JOIN SOP30300 SL ON S.SOPNUMBE = SL.SOPNUMBE 
INNER JOIN IV00101 IV ON SL.ITEMNMBR = IV.ITEMNMBR 
INNER JOIN RM00101 C ON S.CUSTNMBR = C.CUSTNMBR 
WHERE S.VOIDSTTS = 0 AND IV.ITMCLSCD NOT IN ('NON INV','TRAINING','LABOR') 

그룹 : Chart Image

쿼리 나는 발현을 확인하는 데 사용 (varchar (1), DATEPART ("QUARTER", S.DOCDATE))

+0

이 쿼리에 이러한 3 가지 조건을 추가하면 결과를 얻었음을 이미 확인 했습니까? – StevenWhite

+0

네, SSMS에서 쿼리 할 때 데이터를받습니다. 이 방식으로 쿼리의 형식을 지정하지 않기로 선택했기 때문에 하나의 쿼리에서 여러 차트를 작성할 수있는 유연성이 향상되었습니다. –

+0

차트 작성 방법과 관련된 문제 일뿐입니다. 'Series Groups'뿐만 아니라 차트의 'Values' 섹션에 추가해야합니다. 그 외에는 무엇이 잘못되었는지를 판단하기 위해 보고서 디자인에 대한 추가 정보가 필요하다고 생각합니다. – StevenWhite

답변

0

StevenWhite가 몇 가지 질문을 한 후에 내 문제에 대해 다르게 생각하게되었습니다.
대신 차트를 사용하는 대신 데이터를 표시 할 테이블을 추가했습니다. 그리고 데이터를 반환했지만 데이터 값은 0입니다. 따라서 차트에 반환 된 값이 없습니다. 나는 가치가 없다고 가정하면서 실수를했지만, 0의 가치가있었습니다.

그 후, 합계 (if (...)) 표현을 무너 뜨 렸습니다. 그것이 내가

=SUM(iif(Fields!SOPTYPE.Value = 3, Fields!QUANTITY.Value, 0)) 

을 사용했을 때 데이터를받은 것으로 나타났다, 그러나 나는

=SUM(iif(Fields!DOCID.Value = "INV", Fields!QUANTITY.Value, 0)) 

을 사용했을 때 경고 메시지가 있어요 : 일부 인터넷 검색을 수행 한 후

Severity Code Description Project File Line Suppression State  
Warning  [rsAggregateOfMixedDataTypes] The Y expression for the chart ‘Chart7’ 
uses an aggregate function on data of varying data types. Aggregate functions other than 
First, Last, Previous, Count, and CountDistinct can only aggregate data of a single data type. 

를, 그것은이었다 수량의 리턴 데이터 유형으로 인해 오류가 발생했습니다. 그래서 방금 합계 (if (...)) 식을 업데이트하여 CInt를 반환했습니다. 그리고 이것으로 문제가 해결되었습니다.

업데이트 표현 : 하나 개의 필드는 데이터 유형을 다양 반환하는 방법을 나는 IIF의 다른 부분에 사용되는 0 값과 다른 데이터 유형이 아닌

=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV" 
OR Fields!DOCID.Value = "RMAINV", CInt(Fields!QUANTITY.Value), 0)) 

는하지만, 아직 확실하지 않다 들.

+0

데이터 유형 문제를 피하기 위해 0 대신에'Nothing'을 사용할 수 있습니다. – StevenWhite

+0

감사합니다. StevenWhite 님, 문제도 해결했습니다. –