보고서에 정의 된 모든 매개 변수를 반복하고 매개 변수 이름과 값의 표시 문자열을 만들려합니다. 그런 다음 보고서에 결과를 표시하여 사용자가 특정 실행에 어떤 매개 변수가 사용되었는지 알 수 있습니다. 유일한 문제는 Parameters 컬렉션을 반복 할 수 없다는 것입니다. Parameters 컬렉션에 인덱서가없는 것 같지 않으며 IEnumerable을 구현하지 못하는 것 같습니다. 누구든지이 일을 성취 할 수 있었습니까? 저는 SSRS 2005를 사용하고 있으며 보고서 코드 (즉, 외부 어셈블리가 없음) 내에 구현되어야합니다. 감사!SSRS 2005 - 보고서 매개 변수 루핑
답변
불행히도이 작업을 수행하는 간단한 방법이없는 것처럼 보입니다. 자세한 내용은 http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx을 참조하십시오. comments of that post을 보면이 문제를 해결할 수있는 몇 가지 방법이 있지만 매우 우아하지는 않습니다. 가장 간단한 해결책은 보고서 코드의 어딘가에 보고서 매개 변수의 목록을 가져야한다는 것입니다. 이는 분명히 DRY 원칙을 위반하지만, 가장 간단한 솔루션을 원한다면 그걸로 살아야 할 수도 있습니다.
외부 어셈블리를 사용하는 것이 훨씬 쉽다는 생각 때문에 외부 어셈블리가 없다는 제약을 다시 생각해 볼 수 있습니다. 또는 보고서가 많이 변경되지 않으면 매개 변수 이름 및 값 목록을 수동으로 만들 수 있습니다.
질문을 이해하는 경우, 내가하는 일을 수행하십시오. 보고서에 텍스트 상자를 놓은 다음 보고서를 설정하는 동안 = "매개 변수 1 :"+ 매개 변수! 매개 변수를 삽입하십시오. Label + ", Parameter2 :"+ 매개 변수! Parameter2.Label ...
부여 된, 그것은 가장 예쁜 것은 아니지만 우리의 응용 프로그램에서 꽤 잘 작동합니다.
우리는 datetime 값이 있기 때문에 값 대신 레이블을 사용하고 있으며 사용자는 짧은 날짜 또는 월 및 연도 (환경에 따라 다름)에만 관심이 있으며 이미 해당 서식 설정 작업을 완료했습니다. 매개 변수 설정.
적어도 두 가지 방법으로 생각할 수 있습니다. 첫 번째 작업은 효과가 있고 두 번째 작업은 확실히 작동합니다.
웹 서비스를 사용하십시오. 나는 꽤 많은 매개 변수를 얻기 위해 API를 보았다. 직접 액세스가 없더라도 항상 표준 컬렉션을 만들고 foreach 루프에서 ReportParameter 개체를 다른 개체로 복사 한 다음 ReportParameter 인스턴스를 참조 해제하여 사용할 수있는 개별 매개 변수 속성을 사용하여 Count에 액세스 할 수 있습니다.
보고서는 RDL입니다. RDL은 XML입니다. XmlDocument를 만들고 RDL 파일을로드 한 다음 DOM을 사용하여 같은 것을처럼 기본 설정 값이나 연결 문자열을 다시 작성하는 것이 좋습니다.
앱에 RDL 파일에 대한 파일 시스템 액세스 권한이없는 경우 웹 서비스를 통해 액세스 할 수 있습니다.
그가 렌더링하는 동안 그가 보고서 내에서 의미를 알지 못했습니다. 리플렉션을 사용하여 Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.Parameters 내부를 둘러보고 더 접근하기 쉬운 것으로 캐스트 할 수 있는지 확인합니다. –