배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   공통
검색어:   콤보 상자
제목:   콤보 상자의 모든 것(1)
     
 


[액세스] 콤보 상자의 모든 것(1)

오늘은 7월5일(화)에 진행되는 염깅웅님 Access 실무 활용 야간 과정(7월) 콤보상자에 대해서 알아보도록 하겠습니다. (사용버전: 2003)

콤보상자와 목록상자는 한 화면에서 관련 데이터를 보여주는 아주 좋은 방법입니다. 다음 그림은 Northwind.mdb 파일에 있는 ‘제품’ 폼입니다.

‘제품’ 폼에서는 제품에 관련된 필드 데이터를 입력하시면 됩니다. ‘제품’을 설명할 수 있는 요소를 입력한다고 보면 되겠습니다. 이 그림에서는 ‘제품’을 설명할 수 있는 요소로 ‘제품 이름’, ‘제품 분류’, ‘포장 단위’ 등을 입력 받게 해 놓았습니다.

여기에서, ‘공급업체’를 잘 살펴보기 바랍니다. ‘공급업체’는 ‘제품’과는 구별되는 또 다른 관리요소입니다. 따라서 ‘공급업체’ 라는 별도의 데이터 집합(테이블)이 있고, 이 데이터 집합의 데이터를 가져와서 사용해야 하는 것이지요. ‘제품’ 테이블에는 ‘공급업체명’이 아닌, ‘공급업체 번호’만 기록되고, 혹시 해당제품 공급업체의 상세한 정보가 필요하다면 ‘공급업체’ 테이블에서 찾아 보아야 하는 것이 바로 관계형 데이터베이스의 기본 철학입니다.

한편, ‘제품’ 테이블에 데이터를 입력할 때, ‘공급 업체명’만 가지고는 정확한 구별이 어려울 수 있습니다. 그래서 ‘공급 업체명’과 함께 ‘공급 업체’를 설명할 수 있는 추가적인 데이터를 가져와서 보여준다면 보다 훌륭한 응용프로그램을 만들 수 있을 것입니다. 이 때 사용되는 추가적인 데이터는 ‘제품’ 테이블에 있는 것이 아니고, ‘공급업체’ 테이블에 있습니다. 하지만 지금 보는 이 폼은 ‘제품’ 테이블에 기반한 폼이며, 일반적인 방법으로는 ‘공급업체’ 테이블의 데이터를 같이 보여줄 수 없습니다.

이 때, 콤보상자나 목록상자를 이용하면 기본이 되는 데이터 집합의 관련 데이터 집합을 함께 보여줄 수 있습니다. 여러분의 응용프로그램에 콤보상자나 목록상자를 이용하게 되면 사용자들이 이용하기 편리한 데이터베이스 응용프로그램을 만들 수 있습니다.

그러면 지금부터 이러한 콤보상자를 어떻게 만드는지 알아보도록 하겠습니다. 콤보상자는 마법사를 이용해서 만들 수도 있고, 목록상자를 이용해서 만들 수도 있습니다. 보통 마법사를 이용해서 많이 만들게 되는데, 마법사를 이용해서 만든 콤보상자는 다음과 같은 문제점이 있습니다.

1. 여러 테이블의 데이터를 가져와서 보여주기 어렵습니다.
2. 요약된 데이터를 보여주기가 어렵습니다.
3. 복잡한 정렬 조건을 만족시키기 어렵습니다.

따라서 실무에 필요한 데이터베이스 응용프로그램을 만들기 위해서는, 마법사를 이용하지 않고 만드는 방법을 알아두는 것이 좋습니다. 마법사를 이용하지 않고 콤보상자를 만드는 것은 ‘콤보상자를 어떻게 보이게 할 것인가?’에 대한 답을 차근차근 기록하는 것이라고 생각하면 쉽습니다.

다음 그림은 콤보상자를 만들기 위한 콤보상자의 속성을 도식화 한 것입니다. 이 그림을 보면서 콤보상자의 속성에 대해서 하나하나 알아보도록 하겠습니다. 참고로, 콤보상자를 만들 때는 여기에서 소개하는 순서대로 디자인하는 것이 좋습니다.

1. 행 원본 : 행 원본 속성은 콤보상자를 클릭했을 때 보여주는 목록의 데이터 원천을 기록하는 속성입니다. 콤보상자를 클릭했을 때 어떤 데이터가 나오기를 바라십니까? 그 데이터를 가져올 수 있는 명령을 기록해 주면 됩니다. 일반적으로 데이터베이스에 있는 테이블의 일부가 바로 행 원본에 기록됩니다. 이 그림에서는 ‘고객’ 테이블의 데이터를 행 원본으로 하였습니다.

2. 바운드 열 : 바운드 열 속성은 콤보상자에서 어떤 ‘행’을 선택했을 때 콤보상자가 실제로 가지고 있는 값을 말합니다. 앞의 그림에서 보면, 콤보상자의 행에는 여러 필드로 구성된 데이터를 볼 수 있습니다. 첫 번째 필드는 ‘고객번호’, 두 번째 필드는 ‘고객명’, 세 번째 필드는 ‘담당자명’, 네 번째 필드는 ‘담당자 직위’ 입니다. 그림에서처럼 우리가 ‘경성 트레이딩’에 해당하는 행을 선택했을 때, 콤보상자는 어떤 값을 가지고 있을까요? 하나의 컨트롤에는 하나의 필드 값에 해당하는 값을 가져야 합니다. 행 전체를 가질 수는 없기 때문입니다. 하지만, 사용자가 선택하는 것은 행 전체입니다. 따라서 사용자가 행 전체를 클릭했을 때, 어떤 값이 컨트롤에 저장되어야 하는지 지정해 놓아야 합니다. 지금까지 복잡한 설명을 하였는데, ‘바운드 열’ 속성은 무조건 1로 지정해 놓고, 콤보상자가 가지고 있어야 하는 값을 첫 번째 필드로 만드는 방법이 좋습니다.

3. 열 너비: 열 너비 속성은 콤보상자를 클릭했을 때 나타나는 행에 대해서 각 필드의 너비를 지정하는 항목입니다. 각 필드는 그 특성에 따라서 저장된 데이터의 양이 달라질 것입니다. 어떤 필드는 너비가 적어도 되고, 어떤 필드는 너비가 넓어야 충분한 데이터가 보일 것입니다. 이러한 값들을 지정하는 속성입니다. 일반적인 환경이라면 너비 지정 단위는 cm 입니다.
이 때 주의할 것은 모니터상에서는 cm 라는 단위가 큰 의미가 없다는 점입니다. 19” 모니터를 사용하는 사람과 17”모니터를 사용하는 사람의 1cm는 그 너비가 다르게 표시될 것이기 때문입니다. 열 너비 속성의 cm 라는 단위는 상대적인 크기라고 생각하면 됩니다.

4. 열 개수: 열 개수 속성은 ‘행 원본’ 속성에 정의된 데이터 원본에서 몇 번째 필드까지를 콤보상자에 표시할 것인지를 지정하는 속성입니다. 열 너비 속성을 1cm;2cm;1cm 라고 지정했다고 하더라도, 열 개수 속성이 2로 되어 있으면 두 개의 열 밖에 보이지 않습니다.

5. 행 개수: 행 개수 속성은 콤보상자의 목록에서 한 화면에 보여지는 행의 개수를 지정하는 속성입니다. 콤보상자에 표시되는 데이터는 아주 많을 수 있습니다. 10,000개의 행을 보여주는 콤보상자에서 10,000개의 데이터를 모두 보여주지는 못하지 않을까요? 이 때 한 화면에 보여주는 행의 개수를 지정할 수 있습니다. 경험상 20개까지는 한 화면에서 보기에 크게 부담되지 않는 콤보상자의 행 개수입니다. 기본값은 8로 되어 있는데, 데이터가 많을 경우 상당히 많은 스크롤을 하게 되어 다소 불편할 수 있습니다.

6. 목록 너비: 목록 너비 속성은 콤보상자의 전체 너비를 지정하는 속성입니다. 열 너비 속성과 다소 혼동될 수 있으니 주의 바랍니다. 예를 들어 열 너비 속성을 1cm;2cm 로 하였을 경우, 목록 너비를 1cm 로 하게 되면 두 번째 열은 아예 보이지 않게 됩니다. 따라서 보통, 목록 너비 속성의 경우 열 너비 속성의 각각의 합계 + 0.5 정도를 부여하면 적당합니다. 여기에서 0.5 는 데이터가 많을 경우 스크롤 막대의 공간으로 보면 됩니다.
그래서, 열 너비 속성을 1cm;2cm 로 하였을 경우, 목록 너비 속성은 3.5cm 로 하는 것이 적당합니다.

이러한 순서로 속성값을 설정하면 여러분들이 보고자 하는 콤보상자가 화면에 보이게 될 것입니다. 다음 데일리 팁에서는 이러한 콤보상자를 만드는 방법을 따라하기를 통해 알아보도록 하겠습니다.