2014-02-11 14 views
0

SSRS 2008에서 레이블을 만들었습니다.이 레이블은 쿼리에서 반환 된 단일 레코드에서 데이터를 수집합니다. 사용자에게 인쇄 할 x 번호를 묻는 메시지를 표시하고 레이블의 맨 아래에 x 값 (x 페이지의 x처럼)을 표시 할 수있는 기능을 추가하고 싶습니다.x의 x 생성 레이블

x 개의 라벨을 생성하는 방법에 대해 고민하고 있습니다.

+0

지금까지 시도한 코드를 보여주십시오. – eebbesen

+0

이 스크립트를 실행하면이 오류 ("SQL 명령이 제대로 종료되지 않았습니다.")가 sd1 (ID)로 표시됩니다 (SELECT 1 AS EXPR1 FROM SYS. "DUAL" ) : p_intcounter)) 별개의 orders.status을 선택 , 난 후, 먼저 실제 쿼리를 SD1 쿼리를 넣으면는 orders.orderkey = '0000000289' 크로스 SD1 – user3298762

+0

에서 선택 ID에 가입 주문 에서 는 orders.orderkey 크로스 조인, "테이블 존재하지 않습니다"오류가 나타납니다. 그러나 개별 쿼리는 결합되지 않은 경우 잘 실행됩니다. – user3298762

답변

0

레코드 당 하나의 레이블이 반환되면 데이터 집합에 행 번호를 추가하십시오. 당신이 인쇄하는 것을 목표로하는 경우,

=CStr(Fields!RowNumber.Value) + " of " + CStr(Parameters!X.Value) 

을 또는 : 하나는 매개 변수로 받아들이는 것 때문에, 또는 다음 등 일련의 레코드를 계산하여 - X의 값은 어떻게 든 가능해야한다 1 행을 반환하는 데이터 집합에 의해 채워지는 동일한 레이블의 동적 (X) 숫자는 상황이 좀 더 복잡해집니다. 내가 뭘 권하고 싶습니다 귀하의 쿼리를 귀하의 보고서에 필요한만큼 여러 번 1 행을 복제하고 있습니다. 여러 가지 방법으로이 작업을 수행 할 수 있습니다. X 행을 채우는 재귀 적 공통 테이블 식을 만든 다음 실제 데이터 집합에 CROSS JOIN을 수행하여 X를 설정하는 값에 따라 행을 효과적으로 복제하는 예가 있습니다. :

DECLARE @x INT 
SET @x = 100 

;WITH HelperCTE AS 
(
    SELECT 
     1 AS 'blah' 
    UNION ALL 
    SELECT 
     blah+1 
    FROM 
     HelperCTE 
    WHERE 
     blah<@x 
) 

SELECT 
    * 
FROM 
    YourTable 
CROSS JOIN 
    HelperCTE 


/* 
    Your server is likely configured with a maximum recursion depth that could 
    prevent the CTE from working. 
    Uncomment the line below, and set the "1000" to whatever you need 
*/ 
--OPTION (MAXRECURSION 1000) 

그런 다음 당신은 당신이 인쇄해야 라벨 당 하나 개의 기록을해야합니다, 당신은 그것을 처리하는 방법은 무수히있을 것이다 - 당신이 이미 만든 ROWNUMBER 제안을 사용할 수 있습니다, 당신은 페이징을 이용할 수있다 SSRS 등

+0

정보를 제공해 주셔서 감사합니다. 이것은 분명히 내가이 소프트웨어의 초보자라는 것을 말해 준다. 나는이 일을하는 과정을 통해 나를 일하도록 신경 쓰지 않기를 바란다. 쿼리는 항상 하나의 레코드 만 반환하므로 솔루션으로 두 번째 옵션을 찾고 있습니다. 제공된 코드를 삽입했지만 코드를 실행할 때 다음 오류가 나타납니다. 이 과정에서해야합니까? – user3298762

+0

예제에서 제공 한 모든 것을 잡고 관리 스튜디오에 붙여 넣으십시오. 내 "ㅋㅋ"별칭을 바보 같은 것으로 바꿉니다. "YourTable"을 테이블 이름으로 바꾸고 "*"를 원하는 필드의 이름으로 바꾸고 CTE의 별칭 필드 (예 : "blah")를 바꾸십시오. 그러나 변경해야합니다. 절을 사용하여 필요한 항목을 필터링하십시오. 까다로운 부분은 재귀입니다. 시작 부분에서 주석 처리 된 내용을 무시하고 그대로 쿼리를 사용합니다. @X (# of – kyzen

+0

/최대 재귀 수준을 초과하는 것에 대한 오류가 발생하면 마지막 행 ("OPTION (MAXRECURSION 1000))의 주석 처리를 제거한 다음"1000 "을 원하는대로 변경하십시오 @X가 설정되어 있습니다. MAXRECURSION을 사용하여 게으르지 않게하고 매우 높은 숫자로 설정하십시오. 재귀 제한은 실수로 매우 비효율적 인 서버 분쇄 코드를 실행하는 사용자를 보호하는 역할을합니다. – kyzen