데이터베이스 일반 3강. 폼과 보고서
테이블에 직접 입력하지 말라는 규칙에는 이유가 있습니다. 사람은 옆줄을 잘못 봅니다.
풀고 시작
사람은 옆줄을 잘못 봅니다
테이블을 열면 스프레드시트처럼 격자가 나옵니다. 여기 직접 입력해도 되는데, 실무에서는 그러지 않습니다.
수십 개 열이 옆으로 늘어선 표에서 200번째 행에 값을 넣는다고 생각해 보세요. 가로로 스크롤하는 사이 한 줄 위나 아래를 건드리게 됩니다. 게다가 어떤 필드가 필수인지, 무엇을 넣어야 하는지 격자만 봐서는 알 수 없죠.
폼(form) 은 레코드 하나를 화면 가득 펼쳐 보여 주는 입력 창입니다. 한 번에 한 사람의 정보만 다루니 옆줄을 볼 일이 없고, 필드마다 설명을 붙이고 순서를 정하고 목록에서 고르게 만들 수 있습니다. 테이블은 창고이고 폼은 창구라고 생각하시면 됩니다.
폼에는 여러 모양이 있습니다. 단일 폼은 한 번에 한 레코드를 보여 주고, 연속 폼은 같은 모양을 세로로 이어 여러 레코드를 보여 주며, 데이터시트 폼은 격자 모양입니다. 분할 폼은 위에는 폼, 아래에는 격자를 함께 놓아 두 방식의 장점을 합칩니다.
하위 폼은 일대다 관계를 화면에 그대로 옮긴 것입니다. 위에는 고객 하나, 아래에는 그 고객의 주문 목록이 함께 뜨죠. 이때 두 폼을 잇는 것이 기본 필드 연결과 하위 필드 연결입니다. 관계가 이미 맺어져 있으면 액세스가 알아서 채워 줍니다.
컨트롤은 세 종류로 나뉩니다
폼과 보고서에 올리는 요소를 컨트롤(control) 이라 부르고, 원본과의 관계에 따라 셋으로 나뉩니다.
| 종류 | 무엇 | 예 |
|---|---|---|
| 바운드 컨트롤 | 테이블이나 쿼리의 필드와 연결됩니다 | 고객명을 보여 주는 텍스트 상자 |
| 언바운드 컨트롤 | 원본과 연결되지 않습니다 | 제목 레이블, 로고 그림, 선 |
| 계산 컨트롤 | 수식의 결과를 보여 줍니다 | 단가와 수량을 곱한 금액 |
계산 컨트롤에 넣는 식은 등호로 시작합니다. 그리고 이 값은 저장되지 않습니다. 화면에 보일 때마다 다시 계산되죠. 계산 결과를 저장하지 않는 것은 낭비처럼 보이지만, 단가가 바뀌었을 때 옛 계산값이 남아 어긋나는 일을 막아 줍니다.
목록에서 고르게 하는 컨트롤도 둘입니다. 콤보 상자는 접혀 있다가 눌러야 펼쳐지고 직접 입력도 허용할 수 있습니다. 목록 상자는 항상 펼쳐져 있고 목록 밖의 값은 넣을 수 없습니다. 항목이 적고 화면에 늘 보여야 하면 목록 상자, 많으면 콤보 상자가 맞습니다.
보고서는 인쇄를 위해 태어났습니다
보고서(report) 는 폼과 닮았지만 목적이 다릅니다. 폼은 입력과 조회를 위한 것이고, 보고서는 인쇄와 출력을 위한 것입니다. 그래서 보고서에서는 데이터를 고칠 수 없습니다.
보고서의 힘은 구역(section) 에 있습니다. 각 구역이 언제 몇 번 인쇄되는지가 정해져 있고, 그 규칙을 알면 원하는 배치를 만들 수 있습니다.
| 구역 | 언제 인쇄되나 |
|---|---|
| 보고서 머리글 | 보고서 전체에서 맨 처음 한 번만 인쇄됩니다 |
| 페이지 머리글 | 모든 페이지의 위쪽마다 인쇄됩니다 |
| 그룹 머리글 | 그룹이 시작될 때마다 인쇄됩니다 |
| 본문 | 레코드마다 한 번씩 인쇄됩니다 |
| 그룹 바닥글 | 그룹이 끝날 때마다 인쇄됩니다. 소계 자리입니다 |
| 페이지 바닥글 | 모든 페이지의 아래쪽마다 인쇄됩니다 |
| 보고서 바닥글 | 보고서 맨 끝에 한 번만 인쇄됩니다. 총계 자리입니다 |
보고서 머리글과 페이지 머리글의 차이가 시험 단골입니다. 보고서 제목처럼 딱 한 번만 나와야 하는 것은 보고서 머리글에, 열 이름처럼 페이지마다 반복돼야 하는 것은 페이지 머리글에 둡니다.
부서별 소계는 그룹 바닥글에, 전체 총계는 보고서 바닥글에 둡니다. 페이지 번호는 페이지 바닥글에 두고, 식으로는 페이지 함수와 페이지 수 함수를 씁니다.
인출 문제
이전: 데이터베이스 일반 2강 · 다음: 데이터베이스 일반 4강