부록: 하위 보고서에 대한 향상된 범위 매개 변수 코드
지금까지 하위 보고서가 포함된 보고서를 사용하도록 자습서 프로젝트를 수정하고, 주문 날짜 범위를 하위 보고서에서 작성된 범위 매개 변수로 설정하는 방법을 설명했습니다. 이 부록에서는 향상된 API 기능을 사용하여 하위 보고서의 매개 변수를 읽고 설정하는 방법에 대해 설명합니다.
이전 절차에서는 ParameterFieldDefinitions 및 ParameterFieldDefinition 클래스를 사용하는 SetDateRangeForOrders() 도우미 메서드를 만드는 방법에 대해 설명했습니다.
이 자습서에서는 ParameterFieldDefinitions 및 ParameterFieldDefinition 클래스를 사용하는 코드 줄을 제거합니다. 그런 다음 향상된 Crystal Reports API의 ParameterFields 및 ParameterField 클래스를 사용하여 SetDateRangeForOrders() 메서드를 코딩하는 방법을 설명합니다.
참고 |
---|
향상된 API에는 이산 매개 변수 필드가 있는 하위 보고서에 대한 SetParameterValue(string parameterFieldName, object value, string subreport) 메서드가 포함되어 있습니다. 이 자습서의 경우 하위 보고서에 범위 매개 변수가 포함되어 있으므로 SetParameterValue()를 사용할 수 없습니다. |
범위 매개 변수가 포함된 하위 보고서에 대해 향상된 Crystal Reports API를 사용하려면
"자습서: 하위 보고서의 매개 변수 읽기 및 설정"의 지침에 따라 프로젝트를 만들어야 합니다.
이 자습서의 완성된 프로젝트를 엽니다.
Web Form 또는 Windows Form을 엽니다.
보기 메뉴에서 코드를 클릭합니다.
SetDateRangeForOrders() 메서드 내에서 ParameterFieldDefinitions 또는 ParameterFieldDefinition 클래스를 사용하는 코드 줄을 삭제합니다. 삭제해야 할 코드 줄은 다음과 같습니다.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME) myParameterFieldDefinition.CurrentValues.Clear() myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue) myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentValues)
ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields; ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME]; parameterFieldDefinition.CurrentValues.Clear(); parameterFieldDefinition.CurrentValues.Add(parameterRangeValue); parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValues);
다음 단계에서는 범위 경계 형식을 설정하는 코드 뒤의 SetDateRangeForOrders() 메서드에 새로운 Crystal Reports API 메서드를 추가합니다.
ReportDocument 인스턴스의 ParameterFields 속성에서 ParameterFields 인스턴스를 가져오는 코드를 SetDateRangeForOrders() 메서드 내에 작성합니다.
Dim myParameterFields As ParameterFields = reportDocument.ParameterFields
ParameterFields parameterFields = reportDocument.ParameterFields;
두 개의 인덱싱된 값인 하위 보고서 매개 변수 필드 이름과 하위 보고서 이름을 기준으로 인덱싱된 ParameterFields 클래스에서 ParameterField 인스턴스를 검색합니다. 클래스의 맨 위에서 선언한 두 개의 상수 값을 전달합니다.
Dim myParameterField As ParameterField = myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)
ParameterField parameterField = parameterFields[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
ParameterField 인스턴스의 CurrentValues 속성에 대해 Clear() 메서드를 호출하여 CurrentValues 속성에서 기존의 값을 모두 제거합니다.
``` vb
myParameterField.CurrentValues.Clear()
```
``` csharp
parameterField.CurrentValues.Clear();
```
이전에 만든 ParameterRangeValue 인스턴스를 ParameterField 인스턴스의 CurrentValues 속성에 추가합니다.
myParameterField.CurrentValues.Add(myParameterRangeValue)
parameterField.CurrentValues.Add(parameterRangeValue);
이제 프로젝트를 빌드하고 실행하여 하위 보고서에 대한 범위 매개 변수를 읽고 설정할 준비가 되었습니다.