2014-09-26 5 views
1

VS 2010을 사용하여 C#에서 사용자 지정 일정 도구를 작성하여 여러 Crystal Reports 2011 rpt 파일을 실행하고 내보내는 중입니다. 현재이 보고서는 CR Developer 내에서 수동으로 실행되며 일부 보고서에는 런타임시 비워 둘 수있는 선택적 매개 변수가 있으며 보고서의 레코드 선택 수식에서 CR "HasValue()"기능을 사용하여 처리합니다.C#에서 Crystal Reports 2011 보고서를 실행할 때 선택적 매개 변수 처리

나는 실행하고이 보고서 중 하나를 내보낼 프로토 타입 응용 프로그램을 개발하고, 문제없이 매개 변수 값을 전달할 수 있습니다

   // Set up the Parameter/s 

     ParameterFieldDefinitions crParameterFieldDefinitions; 
     ParameterFieldDefinition crParameterFieldDefinition; 
     ParameterValues crParameterValues = new ParameterValues(); 
     ParameterDiscreteValue crUserProfileValue = new ParameterDiscreteValue(); 

     crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields; 
     crParameterFieldDefinition = crParameterFieldDefinitions["UserProfile"]; 
     crParameterValues = crParameterFieldDefinition.CurrentValues; 

     crParameterValues.Clear(); 
     crUserProfileValue.Value = "SIPRECLK"; 
     crParameterValues.Add(crUserProfileValue); 
     crParameterFieldDefinition.ApplyCurrentValues(crParameterValues); 

이 보고서 PDF 및 XLS 수출에서 필요한 결과를 제공합니다.

그러나이 UserProfile 매개 변수는 보고서에서 선택적으로 플래그가 지정되며 보고서를 CR Developer에서 수동으로 실행할 때 해당 매개 변수 필드를 비워 두는 사용자를 에뮬레이션하기 위해이를 빈 값으로 설정하는 방법을 찾을 수 없습니다.

내가 String.Empty로crUserProfileValue.Value = ""설정을 시도했지만, 레코드 선택 수식 내에서 사용하는 경우가 모두 실제 매개 변수 값으로 촬영하고있다가, 어느 것과도 일치하지 데이터 원본에서 레코드를 작성하면 빈 보고서가 생성됩니다.

내가 설정 한 경우 crUserProfileValue.Value = null의는 예외가 던져 ". 매개 변수 필드와 매개 변수 필드의 현재 값의 종류가 호환되지 않습니다"

crParametersFieldDefinition.ApplyCurrentValues(crParameterValues); 

진술

나는 또한 crParameterValues ​​ 컬렉션에 crUserProfileValue를 추가,하지만 보고서가 실행될 때 "누락 된 매개 변수 값"예외가 발생하지 시도했습니다.

프로그래밍 방식으로 레코드의 선택 수식에서 CR HasValue() 함수가 FALSE를 반환하게하는 값으로 프로그래밍에서 선택적으로 정의 된 매개 변수의 값을 설정할 수 있습니까?

답변

1

OK, 결국 SAP Community Network를 통해 선택적 매개 변수를 프로그래밍 방식으로 "비 가치"로 설정하는 방법을 알았습니다.

cryRpt.ParameterFields["UserProfile"].CurrentValues.IsNoValue = true; 

작품 완벽하게, 레코드 선택 수식에 필요한 코드 경로를 트리거 : 위의 코드로

오히려 보고서의 DataDefinition.ParameterFields 경로를 사용하는 것보다, 나는 간단하게 작성해야합니다.