2013-06-21 2 views
1

텍스트 필드 매개 변수가있는 SSRS 보고서를 만들었습니다. 여기서 사용자는 쉼표로 구분 된 문자열 값 목록을 입력하게됩니다. 이 목록은 다음을 포함하는 보고서의 데이터 집합에서 SQL 쿼리로 공급됩니다. ... Where TheField in (@myCSVParam).SSRS 보고서를 사용하여 param 값을 전달하는 것은 SQL 데이터 집합에 대한 CSV 목록입니다.

필드에서 단일 값을 전달하면 작동하지만 필드에서 CSV 목록을 전달하면 보고서에 그러한 값이 존재하지 않는다고 표시됩니다.

저는 CSV리스트를 단일 값으로 취급하고 있으므로 데이터가 다시 돌아 오지 않는다고 생각합니다.

어떻게 그 CSV 목록을 변환하고 SQL IN 필터에 사용할 수있는 매개 변수로 변환합니까?

+0

'IN'문을 사용 했습니까? – siri

+0

그게 내가 SQL 쿼리에서 사용하고있는 것이다. – user1013388

답변

0

@myCSVParam은 단일 값 문자열 매개 변수입니다. 따라서 SSRS는 SQL 문에서 SSRS를 사용할 때 따옴표를 붙입니다. 따라서 하나의 값에 대해 'First' (일치 함)이 표시되지만 'First', 'Second', 'Third'이 아닌 'First, Second, Third' (즉, 다른 값과 일치하는 하나의 큰 값)이되는 여러 값의 경우 (세 개의 개별 값 목록) 너는 네가 한 일이야.

  • 자연스럽게 무엇을 당신이 무엇을 수행하는 다중 값 매개 변수를 사용하여

    당신은 두 가지 옵션이 있습니다. ! 사용자가

  • 수동과 같이 인용 쉼표로 쉼표를 대체하여 목록을 작성 목록에서 값을 선택할 수 있습니다 경우 최선의 방법입니다 : (매개 변수 myCSVParam.Value ","을

    = 바꾸기, '', '')

2

나는이 오늘 할 수있는 방법을 찾고되었고,이 문제를 처리하기 위해 저장 프로 시저를 구축 필요 제안이 많이있다,하지만 난 조금 될이 솔루션을 발견 혼란스러워. 나는 마침내 내 자신의, 정말 간단한 해결책을 내놓았다. 61JF073, 61SW073, 61SW074

내 첫 번째 보고서 매개 변수가 "OrderNo"라는, 설명 "주문 :

그래서, 당신은 사용자가 쉼표로 구분하여, 하나의 텍스트 상자에서 예를 여러 판매 주문을 입력 할 수 있도록하려는 말할 수 Nos (쉼표로 구분) ". 데이터 유형 = "텍스트"이며 아무 것도 검사되지 않습니다.

두 번째 매개 변수는 첫 번째 매개 변수에서 목록을 가져 와서 SQL 쿼리에서 사용할 수있는 "다중 값"목록을 만듭니다.

두 번째 매개 변수 : Name = "OrderNos", type = "Text". "여러 값 허용"이 선택됩니다. 매개 변수 visibility = "Internal"(사용자는이를 볼 필요가 없습니다). 나는 사용자가 출력에 영향을 미칠 것입니다 쉼표 뒤에 공백을 입력 할 수 있습니다 모든 공백을 제거하기 위해 "바꾸기"기능을 사용하고 =Split(Replace(Parameters!OrderNo.Value," ",""),",")

: 가능한 값은 = 없음 기본값은 = 지정 값의 값을 추가 .

이제 SQL 쿼리에 "IN"절이 포함되어 결과를 필터링 할 수 있습니다.

SELECT OrderNo, SalesID, SalesName FROM SalesOrders WHERE OrderNo IN (@OrderNos)

데이터는 SQL 서버에 대신에 필터를 적용하기 전에, 전체 테이블 검색에서 SSRS 보고서를 저장하는 바람직한 방법이다 SSRS 보고서에서 여과한다. 보고에 필요한 데이터 만 검색하려고합니다.

판매 주문 테이블에 수천 개의 행이 있기 때문에 이것이 도움이되기를 바랍니다.

1

대신 2의 파라미터, 나는 (! Category.Value매개 변수 ",") = 분할 같은 것을 사용

와 세트 [(@Category)에서]를 SQL에서 사용되는 매개 변수를 설정 그 표현에. 유일한 단점은 데이터 집합 매개 변수 탭에 묻혀 있다는 것입니다.

나는 결국 split = (split (parameters! Category.Value, "", ""), ",")를 당신과 비슷하게 바꿨다. :) 당신에게, 당신은 오히려 1 개의 매개 변수를 가지며 매개 변수 표현식과 동일하거나 2 개의 매개 변수를 가지며 1을 다른 매개 변수에 전달합니다.

나는 이미지를 게시 할 수 없습니다 그러나 광산은 여기 http://i.stack.imgur.com/rhnWt.png

+0

이미지가 도움이되었습니다. – Rama

0
다음과 같은 쿼리로 시도 할 수 있습니다

:

TheField (REGEXP_SUBSTR을 선택합니다 (@myCSVParamt에서 '[^,] +', 1 , 레벨) A 이중 연결로 인해 regexp_substr (@myCSVParam, '[^,] +', 1, level)이 null이 아닙니다.

희망이 있습니다.