# 크리스탈 레포트 사용방법

**MacOS에서 크리스탈 레포트 사용 및 윈도우 서버 접근 방법**

### **1. 크리스탈 레포트 개요**

크리스탈 레포트(Crystal Reports)는 데이터를 자동으로 가져와 **PDF, Excel, Word 등의 보고서를 생성 및 배포**하는 역할을 합니다 일반적으로 **기업용 ERP, 회계 시스템, CRM 등과 연동**하여 사용되며, 이러한 이유로 **윈도우 서버 환경에서 운영**됩니다

### **2. MacOS에서 윈도우 서버 접근 방법**

MacOS에서 윈도우 서버에서 실행 중인 크리스탈 레포트에 접근하려면 **원격 데스크톱 연결**을 사용해야 합니다

#### **2.1 Microsoft 원격 데스크톱 앱 설치**

MacOS에서는 RDP(Remote Desktop Protocol) 파일을 실행하여 원격 서버에 접속할 수 있으며, 이를 위해 **Microsoft의 원격 데스크톱 앱**이 필요합니다

- **앱 다운로드 경로:**  
    [Microsoft Remote Desktop (App Store) ](https://apps.apple.com/kr/app/windows-app/id1295203466?mt=12)

####  **2.2 원격 데스크톱 연결 방법**

1. **Microsoft Remote Desktop 앱을 실행**합니다.
2. **'Import from RDP File'** 또는 \*\*'새 연결 추가'\*\*를 선택합니다.
3. 제공받은 **RDP 파일을 불러오거나 수동으로 서버 정보를 입력**합니다.
4. **Username(사용자명)과 Password(비밀번호)를 입력하여 로그인**합니다.
5. 원격 데스크톱을 통해 **윈도우 서버에 접속**하면 크리스탈 레포트를 사용할 수 있습니다.

[![스크린샷 2025-02-14 오전 11.19.35.png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/ajF2025-02-14-11-19-35.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/ajF2025-02-14-11-19-35.png)

<div id="bkmrk--1">---

</div>### **3. 크리스탈 레포트 실행** 

다음은 윈도우 서버 접속 후 `.rpt` 파일을 열어 크리스탈 리포트에서 보고서를 편집할 때, 자주 사용하는 기능들 입니다

[![스크린샷(19).png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/19.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/19.png)

#### 🔹 **1. 텍스트 상자 (Text Box)**

📌 **역할:**

- 고정된 텍스트(라벨)를 추가할 때 사용합니다
- 예: `"사업자등록번호"`, `"전화번호"`, `"고객명"` 같은 문구

#### 🔹 **2. 라인(Line) 생성 도구**

📌 **역할:**

- 보고서에서 표(테이블)와 같은 구조를 만들 때 가로, 세로 선(Line)을 추가하는 기능입니다
- 예: 표의 구분선을 추가하여 가독성을 높일 때 사용합니다

#### 🔹 **3. DB 필드 (Database Fields) - 동적 데이터 바인딩**

📌 **역할:**

- DB에서 가져온 데이터를 자동으로 보고서에 반영하는 역할입니다
- 예: `{c1}` → `"사업자등록번호"`, `{c2}` → `"전화번호"` 등의 값을 동적으로 불러옴

### **4. 크리스탈 리포트에서 합계 자동 정렬 방법**

📌 **목표: ex) 연말정산에서 데이터 한줄 한줄 추가 될때 합계가 맨 아래에 위치하는 방법**

- **DB에서 불러온 데이터(Details)가 동적으로 추가될 때, 맨 아래의 "합계"가 자동으로 내려가도록 설정**
- **Header, Details, Footer에서 같은 변수 이름을 사용할 때, `position` 값을 이용해 구분**
- **`Section Expert`의 `Suppress` 기능을 활용하여 필요한 섹션만 표시되도록 설정**

---

### **1. 동적 로우 추가 시 Footer(합계) 자동 위치 조정**

📌 **원리:**

- **Details(바디)에서 데이터가 많아질수록 Report Footer(합계) 섹션이 자동으로 아래로 내려감**
- **Report Footer를 사용**

[![스크린샷(20).png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/20.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/20.png)

📌 **설정 방법:**  
1️⃣ **"Section Expert"에서 Report Footer 설정 조정**

- Report Footer를 우클릭 → `"Section Expert"` 클릭
- `"Print at Bottom of Page"` **체크 해제!**
- `"Keep Together"` **체크!** (이렇게 하면 데이터와 합계가 붙어서 나옴)

2️⃣ **Suppress 조건 추가하여 Report Footer가 마지막에만 나오도록 설정**

- Report Footer 섹션에서 `"Suppress"` 옆의 `X-2` 클릭
- 아래 조건을 입력 <div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"><div class="sticky top-9 md:top-[5.75rem]">  
    </div><div class="overflow-y-auto p-4" dir="ltr">`NOT ONLASTRECORD`</div></div>
- **이렇게 하면 마지막 행에서만 "합계"가 표시됨!**

📌 **예상 결과:**

<table data-end="927" data-start="639" id="bkmrk-no-%EB%B0%A9%EB%AC%B8%EC%9D%BC-%ED%98%84%EA%B8%88-%EC%B9%B4%EB%93%9C-%EC%99%B8%EC%83%81%EA%B8%88%EC%95%A1-%ED%95%A9%EA%B3%84"><thead data-end="673" data-start="639"><tr data-end="673" data-start="639"><th data-end="644" data-start="639">No</th><th data-end="650" data-start="644">방문일</th><th data-end="655" data-start="650">현금</th><th data-end="660" data-start="655">카드</th><th data-end="667" data-start="660">외상금액</th><th data-end="673" data-start="667">합계</th></tr></thead><tbody data-end="927" data-start="712"><tr data-end="762" data-start="712"><td>1</td><td>2024-11-10</td><td>10,000</td><td>50,000</td><td>0</td><td>60,000</td></tr><tr data-end="812" data-start="763"><td>2</td><td>2024-11-11</td><td>5,000</td><td>40,000</td><td>0</td><td>45,000</td></tr><tr data-end="862" data-start="813"><td>3</td><td>2024-11-12</td><td>8,000</td><td>35,000</td><td>0</td><td>43,000</td></tr><tr data-end="927" data-start="863"><td> </td><td>**합계**</td><td>**23,000**</td><td>**125,000**</td><td>0</td><td>**148,000**</td></tr></tbody></table>

✔ **데이터가 많아질수록 합계가 자동으로 맨 아래로 정렬됨**

####  

#### **<span data-end="54" data-start="6">5. </span>크리스탈 리포트에서 Database Fields를 연동하여 데이터 치환하는 방법**

📌 **목표:**  
➡ **오른쪽 `Database Fields`에서 불러온 데이터를 원하는 위치에 배치하여 동적으로 치환하기**

---

#### **1. `Database Fields`에서 필요한 데이터 가져오기**

📌 **설정 방법:**  
1️⃣ **오른쪽 `Field Explorer` 창에서 `"Database Fields"` 선택**  
2️⃣ **필요한 데이터 필드를 찾음** (예: `{c1}`, `{c2}`, `{c3}` 등)  
3️⃣ **각 필드를 드래그하여 보고서(Report) 디자인의 적절한 위치에 배치**

---

#### **2. 데이터 필드를 Header, Details, Footer에 적절히 배치하기**

📌 **배치 방법:**  
✔ **Header(헤더) 섹션:**

- `{position} = "head-foot"` 데이터를 사용하여 회사명, 고객정보 등 배치  
    ✔ **Details(바디) 섹션:**
- `{position} = "body"` 데이터를 사용하여 반복되는 상세 데이터 배치  
    ✔ **Footer(합계) 섹션:**
- `{position} = "head-foot"` 데이터를 사용하여 총합 표시

---

#### **3. 예제: Database Fields 배치하기**

#### 📝 **Report 디자인에서 데이터 배치 예시**

<table data-end="1120" data-start="760" id="bkmrk-%EC%9C%84%EC%B9%98-database-fields-%28"><thead data-end="794" data-start="760"><tr data-end="794" data-start="760"><th data-end="765" data-start="760">위치</th><th data-end="788" data-start="765">Database Fields (예제)</th><th data-end="794" data-start="788">설명</th></tr></thead><tbody data-end="1120" data-start="830"><tr data-end="870" data-start="830"><td>Header</td><td>`{c1}` (사업자번호)</td><td>보고서 상단에 고정</td></tr><tr data-end="910" data-start="871"><td>Header</td><td>`{c2}` (전화번호)</td><td>보고서 상단에 고정</td></tr><tr data-end="953" data-start="911"><td>Details</td><td>`{c3}` (방문일)</td><td>데이터가 동적으로 반복됨</td></tr><tr data-end="995" data-start="954"><td>Details</td><td>`{c4}` (현금)</td><td>데이터가 동적으로 반복됨</td></tr><tr data-end="1037" data-start="996"><td>Details</td><td>`{c5}` (카드)</td><td>데이터가 동적으로 반복됨</td></tr><tr data-end="1079" data-start="1038"><td>Details</td><td>`{c6}` (합계)</td><td>데이터가 동적으로 반복됨</td></tr><tr data-end="1120" data-start="1080"><td>Footer</td><td>`{c7}` (총합계)</td><td>마지막 행 아래에 위치</td></tr></tbody></table>

✔ **이제 데이터가 동적으로 추가될 때, 각 위치에 맞는 값이 자동으로 채워짐**  
✔ **합계도 마지막 행 아래에 자동으로 정렬됨**

---

##  