2010-01-26 1 views
0

ASP.NET 웹 응용 프로그램에서 ReportViewer 컨트롤을 사용하고 사용자 그룹이 다양한 보고서에 액세스 할 때 보고서 서버를 공개적으로 액세스 할 수 있어야하는 경우가 있습니다.SOAP API를 사용하여 링크 된 보고서에 대해 SSRS 보고서 매개 변수를 설정하는 방법은 무엇입니까?

SQL Server 2008 Standard Edition에 대해 실행됩니다.

보안은 링크 된 보고서 (웹 사용자의 보고서를 요청할 때 런타임에 게시되는 각 사용자 당 하나씩)를 작성하여 처리되지만 링크 된 보고서 매개 변수 값을 프로그래밍 방식으로 설정하는 데 어려움이 있습니다.

요약하면 보고서에는 예약 된 매개 변수 이름 수가 적습니다 (예 : UserID 및 LanguageID). 런타임에 웹 응용 프로그램은 사용자가 링크 된 보고서 (각 보고서/사용자에 대해 고유 한 링크 된 보고서 이름 사용)가 있는지 확인하고 존재하지 않는 보고서를 작성합니다.

이것은 SSRS SOAP API를 사용하여 완료되었으며 잘 작동합니다. 내가 겪고있는 문제는 링크 된 보고서에 대한 보고서 매개 변수를 설정하는 것입니다.

예를 들어, 시스템 관리자로 로그인하면 보고서를보고 보고서 뷰어 내의 매개 변수를 완전히보고 싶을뿐입니다. "낮은"사용자로 로그인하면 UserID 매개 변수가 링크 된 보고서의 내 ID로 설정되고 다른 사용자의 보고서에서 스누핑되도록 UserID를 변경할 수 없기를 기대합니다.

보고서 관리자에서 연결된 보고서의 속성을 열고 매개 변수 기본값을 설정하고 "사용자에게 묻기"상자를 선택 취소하여 수동으로 수행 할 수 있습니다.

이제 SOAP API를 사용하여 프로그래밍 방식으로이 작업을 수행하려고하고 있으며 올바른 방법을 찾지 못하는 것 같습니다.

몇 점에서 CreateLinkedReport 메서드가 매개 변수를 설정할 수 있다는 힌트를 읽었지 만 필자가 오해의 소지가 있다고 생각하기 시작했습니다. 이 메서드는 Property [] 속성을 허용하지만 이러한 속성은 보고서 메타 데이터 (예 : 연결된 보고서 이름)를 제공하는 것으로 나타납니다.

속성이 보고서 매개 변수임을 나타 내기 위해 속성 이름/값과 함께 사용해야하는 특수 마크 업이 있습니까?

모든 아이디어를 매우 높이 평가합니다.

답변

0

아! 알았다! GetReportParameters 및 SetReportParameters 그들은 아주 많이 연결되지보고있는 보고서 작업으로 문서화되어

하지만, API의 기능이 비트 모두에서 작동하도록 나타납니다

2 개 SOAP 방법이 있습니다. 향후 수색자를 들어

: 나는 ReportParameter []합니다 ( 링크 된 보고서 호출 GetReportParameters의 결과)를 수신하고 반복하는 방법을 작성했습니다. 유사/거의 C# 코드 :

ReportParameter[] reportParameters = ReportingService2005.GetReportParameters(LinkedReportName); 
foreach(ReportParameter reportParameter in reportParameters) 
{ 
    switch(reportParameter.Name) 
    { 
     case "ReservedParam1": 
     reportParameter.DefaultValues = new string[1]; 
     reportParameter.DefaultValues[0] = CalculateReservedParam1(); 
     reportParameter.PromptUser = false; 
     //etc 
    } 
} 
try 
{ 
    ReportingService2005.SetReportParameters(reportParameters); 
} 
catch (Exception e) 
{ 
    // if error occurs while replacing params, delete linked report so user can't specify parameters they aren't entitled to 
    ReportingService2005.DeleteItem(LinkedReportName); 
    throw e; 
} 
관련 문제