티스토리 뷰

WORK

(2020-05-12) FlexCel ReportsDesigners Guide

Think Hub 2020. 5. 12. 21:35

FlexCelReportsDesign.pdf
0.32MB

소개
이 문서에는 FlexCel을 사용하는 개발자와 보고서를 사용자 정의하려는 최종 고급 사용자라는 두 가지 대상 독자가 있습니다. 개발자 인 경우이 안내서 앞에있는 개발자 안내서를 참조하십시오.

 

보고서 요소

보고서를 작성하거나 수정하기 위해 이해해야 할 두 가지 개념이 있습니다.

 

Tags

태그는 보고서를 생성 할 때 응용 프로그램의 값으로 대체 될 템플릿에 쓸 수있는 특수 기호이며 템플릿에 다음 태그를 쓸 수 있습니다.

 

##dataset##field

이 태그는 TFlexCelReport 구성 요소가있는 데이터 모듈에서 "Dataset"이라는 TDataSet (또는 TFlxMemTable) 구성 요소의 값으로 대체됩니다.

 

xls 시트에 쓰기 만하면 현재 레코드의 값이 사용되며 이름이 "__dataset__"인 범위 안에 놓으면 모든 데이터 세트가 템플릿에 덤프됩니다 (아래의 "Named Ranges"섹션 참조). 자세한 내용.

 

#.variable#

이 태그는 응용 프로그램에서 정의한 사용자 정의 값으로 대체되며, "Variable"에 값을 지정하여 대체 할 수있는 두 가지 방법이 있습니다.

 

1. 다음과 같은 코드 줄을 사용할 수 있습니다.

일반적으로 보고서 변수를 정의하는 가장 간단한 방법입니다.

 

2. TFlexCelReport 구성 요소가있는 데이터 모듈에서 공개 된 기능 또는 이름이 "Variable"인 특성을 작성하면 요청시 변수의 값을 리턴 할 수 있습니다. 첫 번째 방법으로 설정 한 값은 모든 보고서 생성을 통해 고정되며 여기에서 FlexCel이 변수를 교체해야 할 때마다 다른 값을 계산할 수 있으므로 사용자 정의 함수를 생성 할 수 있습니다 (예 : 방법 정의) 데이터베이스에서 fixedcost와 variablecost 필드를 반환하는 "TotalCost"또한 게시 된 메서드에 변수를 전달할 수도 있습니다.

 

# .variables #. 간단한 변수 일 수도 있고 변형 배열도 참조 할 수 있습니다. 배열 인 경우“# .variable # .index1 # .index2…”와 같은 템플릿을 작성해야합니다. 여기서 "indexn"은 배열에 대한 n 인덱스이며 게시 된 메서드를 호출 할 때 같은 방식으로 여러 값을 포함 할 수 있습니다.

 

자세한 내용은“시작 보고서(Getting Started Reports)”,“변형 배열(Array of Variants)”및“사용자 정의 함수(User defined functions)”데모를 살펴보십시오.

 

“...delete row...” and “...page break...”

이러한 태그는 항상 보고서의 "A"열에 배치해야하며 행을 삭제하거나 현재 위치에서 페이지 나누기를 추가합니다. "행 삭제"사용법에 대한 자세한 내용은 아래의 "행 삭제"섹션을 참조하십시오. 태그를 사용하여 줄임표 "…"가 아닌 세 개의 실제 점 "..."을 작성하고 있는지 확인합니다. 아래의 "행 삭제"섹션에서 참고 사항을 확인하십시오.

 

때로는 단일 셀에 태그 이상을 쓰려고 할 수 있습니다.
예를 들어, 테이블에서 두 개의 다른 열에 고객의 이름과 성이 있고 하나의 셀에 함께 인쇄하려고한다고 가정하고 둘 이상의 태그를 사용하려면 "<"로 묶어야합니다. 및 ">"표시.

 

예를 들어“이름 : <## customer ## firstname>, 성 :
셀에서 <## customer ## lastname>”을 (를) 지정하면 해당 값으로 대체됩니다. 예를 들어 굵은 파란색 텍스트로“<## customer ## firstname>”과 같이 태그를 다른 형식으로 지정할 수도 있습니다. 굵은 파란색으로 표시되며 성은 정상입니다.

 

명명 된 범위(Named ranges)

태그를 사용하면 시트 내부의 표현식을 바꿀 수 있지만, "공백 채우기(Fill in the blanks)"유형 보고서 만 만들 수 있습니다. 즉, 양식과 같이 정적 인 보고서와 태그가있는 셀이 해당하는 것으로 대체되는 보고서 가치.

 

이제“Band”라는 개념을 소개하겠습니다. 밴드는 테이블의 각 레코드에 대해 반복되는 셀 범위 일뿐입니다 .A1 : C1 셀 범위에서 밴드를 정의하고 테이블과 연결한다고 상상해보십시오. "고객": 그런 다음 셀 A1 : C1에서 첫 번째 고객, 셀 A2 : C2에서 두 번째 등을 갖게됩니다. 이전에 A2 : C2에 있었던 모든 셀은 데이터 세트의 마지막 레코드 후에 아래로 이동합니다.

 

테이블 고객에 6 개의 레지스터가있는 경우 다음과 같은 결과가 나타납니다.

FlexCel에서는 명명 된 범위를 사용하여 밴드를 표시합니다 .Excel 명명 된 범위에 익숙하지 않은 경우 FlexCel을 시작하는 대부분의 사람들을 혼동하는 요소 중 하나이므로 시간을내어 숙지하십시오. 통합 문서를 열면 이름이 지정된 범위가 좀 더 숨겨집니다.

 

A1 : C1에 밴드를 만들려면 메뉴-> 삽입-> 이름-> 정의로 이동하십시오.

또는 Excel 2007에서는 리본 메뉴의 "수식"탭으로 이동하여 "이름 관리자"를 누릅니다.

일단 셀 A1 : C1에 밴드 __Customer__를 정의 할 수 있으며 이름이 정의되면 이름 콤보에서 쉽게 볼 수 있습니다.

범위 이름의 시작과 끝에“__”이 표시됩니다. FlexCel에 이것이 전체 행을 삽입하는 가로 범위임을 나타내는 데 사용됩니다.

 

나머지 이름 ( "고객")은 데이터 모듈에있는 기존 데이터 세트의 이름이어야합니다.

 

레인지 노트(Range notes)

참고 1 : 범위를 교차하지 않거나 이상한 결과를 얻을 수 있으므로 각 범위는 다른 범위의 내부 또는 외부에 있어야합니다.

참고 2 : 범위는 복사 될 전체 행에 영향을 미치므로 한 범위를 다른 범위의 오른쪽이나 왼쪽에 두지 마십시오.

참고 3 : 데이터 집합에 해당하지 않는 일부 __XX__ 범위를 정의 할 수 있습니다.이 범위는 복사되지 않지만 값은 대체됩니다

참고 4 : 항상 다른 모든 것을 포함하는 일부 범위를 정의하므로 컴포넌트는 대체 할 위치를 알고 있습니다 FlexCelReport는 항상 값을 대체하기 위해 가장 큰 범위를 찾습니다. "__"로 시작하고 "__"로 끝나는 한

 

Master detail

명명 된 범위를 다른 범위에 배치하고 마스터 세부 관계를 자동으로 생성 할 수 있습니다 (예 : "__Customer__"범위를 정의하고 그 범위를 "__Orders__"범위로 정의한 경우 응용 프로그램에서 "Customer"사이에 관계가 생성됨) '주문'표를 사용하면 고객별로 주문을 자동으로 그룹화합니다.

 

다음 예에서 노란색 셀은 "__Customer__"범위이고 파란색 셀은 "__Orders__"범위입니다.

이 보고서를 실행하면 다음과 비슷한 결과가 나타납니다.

보시다시피, 주문은 응용 프로그램에 정의 된 데이터 관계와 범위의 중첩에 따라 각 고객에 대해 필터링되며 일반적으로 다른 범위 안에있는 모든 범위는 모든 상위 항목에 의해 필터링됩니다. 원하는만큼 많은 수준의 마스터-디테일 관계가 있으며 각 마스터 밴드는 모든 하위 항목을 필터링합니다.

 

예를 들어, 국가별로 고객을 그룹화하려면 A1 : F6에서 범위가 __Countries__ 인 __Countries__를 정의하면 해당 하위 및 손자에서 자동으로 데이터를 필터링합니다 (고객 및 주문).

 

존재하는 경우 시트에있는 다른 모든 범위를 필터링하여 시트에서 명명 된 모든 범위의 부모 역할을하는 특수 테이블이 있습니다. 이는 다중 시트 보고서를 수행 할 때 시트 이름에 정의하는 테이블입니다. 자세한 내용은 여러 시트 보고서 데모를 볼 수 있으며 각 시트의 모든 테이블은 범주별로 필터링됩니다.

 

Deleting Rows

명명 된 범위를 정의 할 때 나타날 수있는 한 가지 문제는 새 셀을 삽입 할 때 다른 범위의 수식이 어떻게 변경되는지입니다.

품목 목록과 가격에 대한 간단한 보고서를 작성한다고 가정 해 봅시다.

따라서 새 템플릿을 만들고 제목 행을 정의하고 A2 : B2에 명명 된 범위를 삽입하여 데이터를 전파하지만 모든 항목의 총 비용을 모두 알고 싶으므로 B3에 수식을 추가합니다.

이 보고서를 실행하면 행 2와 3 사이에 행이 삽입되지만 수식 합계 (B2 : B2)는 변경되지 않으며 B2와 B2 사이에 아무것도 삽입되지 않으므로 합계 범위는 일정하게 유지됩니다.

 

따라서 확장 할 수있는 합 범위가 필요합니다.

이제 행 2와 3 사이에 행을 삽입하면 새 행을 반영하도록 공식이 업데이트됩니다.

이 특별한 경우에는이 솔루션으로 충분할 수 있습니다. 범위 다음에 빈 행을두면 수식이 확장 된 다음 추가 행을 숨기거나 그대로 둘 수 있습니다.

 

그러나 예를 들어 차트를 작성하는 경우이 추가 행도 차트에 표시되며 이에 대한 간단한 해결책이 있으며 A6 호출에서 "... delete row ..."를 작성하는 것입니다.

 

보고서가 실행 된 후“A”열에“… 행 삭제…”텍스트 (앞 또는 뒤에 공백없이 모두 소문자)가있는 모든 행이 삭제됩니다. 피벗 테이블 또는 차트가 표시되면 PivotDemo.xls 템플릿에서 볼 수 있습니다.

 

Important:

표준 구성에서 Excel XP는 자동으로 3 개의 점“...”을 줄임표 문자“…”로 바꿉니다. 그러나 모양이 같더라도 동일하지 않습니다. FlexCel에서“행 삭제(delete rows)”를 이해하는 데 문제가있는 경우 거기에 실제 점이 있는지 확인하십시오!

 

Fixed Bands

기본적으로 FlexCel은 범위를 확장 할 때 항상 셀을 삽입하며 이것이 일반적으로 원하는 것입니다.

 

A1:Title

A2:##dataset.field

A3:Footer

 

생성 된 보고서에는 A33이 아닌 A33 셀 (예 : 30 개의 데이터 레코드가있는 경우)에 바닥 글이있을 것으로 예상됩니다.

 

그러나 이것이 예상과 다르고 고정 양식 보고서에있는 상황이 있는데 FlexCel을 사용하여 양식을 작성한다고 가정 해 봅시다 대부분의 필드는 데이터 세트와 관련이없는 단순한 표현식 일 뿐이지 만 “TopOrders”테이블도 있습니다 :

여기서 TopOrders에 1 개, 2 개 또는 10 개 (10 개를 초과해서는 안 됨)의 레코드가 있더라도 "Total"행은 23 행에 있습니다. 행을 삽입하므로 일반 범위에서는이 작업을 수행 할 수 없습니다. 이를 위해 FlexCelReport 컴포넌트의“ReportModeRows”속성을“frm_DontCopyAndDontInsert”로 설정할 수 있습니다.

 

Appendix: Using FlexCel designer

Excel을 통해서만 보고서를 작성할 수 있지만 모든 태그를 작성하는 데 시간이 오래 걸릴 수 있습니다 FlexCel 디자이너는이를 돕기 위해 만들어진 작은 도구입니다.

TFlexCelReport 컴포넌트를 두 번 클릭하거나 마우스 오른쪽 단추로 클릭하고 "보고서 편집"을 선택하여 FlexCel 디자이너를 호출 할 수 있습니다.

FlexCel Designer를 시작하면 다음과 유사한 화면이 열립니다.

목록 상자에서 필드, 태그, 보고서 변수 또는 추가 식별자를 "... 행 삭제 ..."로 선택하고 Excel 또는 Open Office로 끌어서 놓을 수 있습니다.

 

필드 드래그를 시작하기 전에 "Alt"를 누르면 필드와 필드 이름이 Excel에 붙여집니다.

 

 

 

 

 

 

댓글