보고서 처리 모델
Crystal Reports는 3단계 보고 방식을 사용하여 보고서를 생성합니다. 하나의 단계는 데이터를 읽고 조작할 때마다 Crystal Reports에서 사용하는 프로세스입니다. 보고서의 복잡 정도에 따라 Crystal Reports에서는 데이터를 처리하는 1, 2, 3단계를 만듭니다. 이 기능을 사용하면 복잡한 보고서의 작성 및 수식 처리가 가능합니다.
선행 단계 1
보고서를 미리 볼 때 가장 먼저 평가되는 요소는 "상수" 수식입니다. 상수 수식은 보고서 전체에서 상수값을 갖는 수식이며 레코드 사이에서 변경되지 않습니다. 예를 들어, 100*30이 상수 수식입니다. 상수 수식은 인쇄 생성 프로세스의 맨 처음에 평가되고 그 이후로는 다시 평가되지 않습니다. 이 프로세스를 "BeforeReadingRecords"라고 합니다. 본문 섹션에 상수 수식 필드(즉, 100*30)를 입력하면 표시된 각 레코드의 결과는 3000이 됩니다.
단계 1
"BeforeReadingRecords" 프로세스가 발생하면 Crystal Reports는 데이터베이스 레코드 읽기를 시작합니다. 레코드 읽기 프로세스 도중 다음과 같은 사항이 발생합니다.
- 레코드 검색. 이 단계에서 가능한 레코드 선택 및 정렬이 데이터베이스에 푸시다운된 위치에서 발생합니다.
- 되풀이 수식의 평가. 데이터베이스 필드가 포함되지만 부분합이나 요약 정보에 대한 참조는 포함되지 않은 수식입니다. 이 확인 시간을 "WhileReadingRecords"라고 합니다. 요약 정보 또는 부분합에 대한 참조를 포함하는 수식은 두 번째 단계에서 처리됩니다.
- 레코드 선택의 로컬 적용. 레코드 선택이 너무 복잡해서 데이터베이스에 푸시다운할 수 없는 경우에는 이 단계에서 Crystal Reports에 의해 적용됩니다.
- 정렬, 그룹화 및 합계. 이 단계에서 Crystal Reports는 레코드를 정렬하고 그룹별로 분리한 다음 각 그룹에 필요한 부분합과 요약을 계산합니다.
- 크로스탭 생성
- 데이터의 저장. 합계 프로세스가 완료되면 모든 레코드와 합계가 메모리 및 임시 파일에 저장됩니다. Crystal Reports는 모든 후속 처리에서 데이터베이스를 다시 읽는 대신 이 저장된 데이터를 사용합니다.
선행 단계 2
선행 단계 2를 수행하는 동안 Crystal Reports는 상위 N/하위 N 또는 계층 그룹화로 보고서에 있는 그룹을 정렬합니다. 이 프로세스에서는 레코드를 읽지 않고 대신에 Crystal Reports가 단계 1의 그룹 인스턴스를 확인하여 상위 N을 적절하게 적용하거나 지정된 계층 그룹화 설정에 따라 그룹을 정렬합니다.
단계 2
Crystal Reports는 페이지의 서식을 설정하는 데이터를 통해 두 번째 단계를 시작합니다. 페이지 서식은 요청에 의해 설정됩니다. 즉, Crystal Reports는 사용자가 요청하거나 단계 3의 총 페이지 계산에서 요구되기 전까지 서식을 설정하지 않습니다.
페이지의 서식을 설정하는 동안 Crystal Reports는 다음과 같은 작업을 수행합니다.
그룹 선택 수식
누적 합계
"WhilePrintingRecords"라고 표시된 수식 계산
이 수식에는 부분합이나 요약 정보에 대한 참조가 포함되어 있으며 "PrintTime" 수식이라고도 합니다. 이 확인 시간을 "WhilePrintingRecords"라고 합니다.
차트와 지도
하위 보고서
주문형 페이지 생성
참고 보고서에 그룹 선택 수식이 있으면 부분합, 총합 및 요약이 잘못될 수 있습니다. 단계 1에서 총합 및 요약이 계산된 후, 단계 2에서 그룹 선택 수식이 데이터를 다시 필터링하기 때문에 이러한 문제가 발생합니다. 그룹 선택 수식이 포함된 보고서의 데이터 합계를 계산할 때는 요약 대신 누적 합계 필드를 사용하십시오.
단계 3
마지막 세 번째 단계에서 총 페이지 개수가 결정됩니다. 총 페이지 개수, M 페이지 중 N 또는 특수 변수 필드를 사용하는 보고서에 적용됩니다.