[액세스] 콤보 상자의 모든 것(2)
오늘은
7월5일부터 진행하는 염기웅님의 Access 실무 활용 야간 과정 중
콤보 상자의 기능에 대해서 알아보도록 하겠습니다.
(사용버전: 2003)
지난번 오피스튜터 데일리 팁에서는 콤보 상자 사용자 정의 기능에 대해서 이론적으로 알아보았습니다. 오늘은 콤보 상자를 만드는 방법을 알아보도록 하겠습니다.
다음 그림은 지난번 데일리 팁에서 알아보았던 콤보 상자의
속성을 도식화 한 것입니다.

이 콤보 상자는 빈 폼에 고객 정보를 보여주고 있습니다. 지금부터 이러한
형식을 보여주는 콤보 상자를 만들어 보도록 하겠습니다.
<1> 아래 링크를 클릭하여 예제파일을 다운로드 받습니다.
[예제 파일 다운로드 받기]
<2> 예제 파일을 열고, 그림과 같이 빈 폼을 하나 만듭니다. 그리고 콤보 상자를 하나 추가합니다.
만약 콤보 상자 마법사가 표시되면 취소 버튼을 클릭하여 마법사 모드를 종료합니다.

<3> 이렇게 추가된 콤보 상자를 폼 보기로 봅니다. 다음 그림과 같이 어떠한 데이터도 콤보
상자에 표시되지 않습니다.

<4> 콤보 상자에 데이터를 표시하기 위해서는 행 원본 속성을 설정해야 합니다. 콤보 상자의
속성 창을 열고 다음 그림과 같이 만들기 버튼을 클릭하여 콤보 상자의 행 원본 속성을 만들어 봅니다. 행 원본
속성에서는 콤보 상자의 화살표 버튼을 클릭했을 때 보여지는 목록 원천을 정의합니다.

<5> 쿼리 작성기가 표시되고 자동으로 테이블 표시 대화상자가 보입니다. 우리가 콤보
상자를 통해서 보아야 할 데이터 집합은 고객 목록입니다. 따라서 테이블 중 Customers
테이블을 추가하고 닫습니다.

<6> 다음 그림과 같이 쿼리 작성기에 ‘Customers’ 테이블이 표시된 것을 볼 수 있습니다.

<7> 우리는 콤보상자에 ‘고객 번호’, ‘회사명’, ‘연락처’, ‘직위’ 정보가 표시되게
하고 싶습니다. 따라서 다음 그림과 같이 쿼리를 디자인합니다.

이 때 주의할 점은 ‘콤보상자’에서 지정하는 행 원본은 항상 어떤 기준에
의해 정렬되어야 한다는 점입니다. 콤보상자를 쓰는 이유는 검색을 편리하게 하기 위함입니다. 그런데
어떤 기준에 의해 정렬되어 있지 않은 상태라면 검색이 상당히 불편하게 될 것입니다.
이 예제에서는 고객 목록을 보고자 하므로, 회사명 필드를 기준으로
정렬하는 것이 타당하다 하겠습니다.
<8> 이렇게 만들어진 행 원본이 실제로 어떻게 보일지 살펴보겠습니다. 쿼리 디자인
도구모음에서 데이터시트 보기 버튼을 클릭하여 실제 데이터가 어떻게 보일지 살펴봅니다.

여기에서는 콤보상자를 통해서 보고자 하는 열의 개수와 각 열의 너비를 파악해야 합니다.
열의 개수는 4개이며, 열의 너비는 왼쪽부터 순서대로 2cm, 4cm,
2cm, 3cm 정도면 됩니다. 이전 데일리 팁에서도 언급하였지만, 여기서의 ‘너비’의 단위는 상대적인
크기입니다. 콤보상자 디자인을 많이 해 보면 이 상대적인 크기에 대해 감을 잡을 수 있습니다.
이 상태에서 반드시 열의 개수와 각 열의 너비를 파악해야 한다는 점, 반드시
기억하기 바랍니다.
<9> 이제 쿼리 디자인 창을 닫습니다. (주의: 저장 버튼을 클릭하지 않습니다. 그냥 창을
닫으십시오.) 쿼리 디자인 창을 닫으면 다음 그림과 같은 대화상자가 나오는데, 여기서 예를
클릭하기 바랍니다. 예를 클릭하는 의미는, 지금까지 지정한 쿼리 문을 콤보 상자의 행 원본으로 사용한다는
뜻입니다.

<10> 쿼리 디자인 창을 닫으면 다시 행 원본 속성 설정 화면으로 돌아옵니다. 앞서
3번 항목의 그림과 비교해서 살펴보면, 지금은 행 원본 속성에 SELECT로 시작하는 알 수
없는 문자가 기록되어 있는 것을 알 수 있습니다.

<11> 이제 콤보 상자의 행 원본 속성을 설정하였으니 콤보 상자를 통해 데이터가 어떻게 보이는지
살펴봅시다. 다음 그림과 같이 데이터가 표시되는 것을 볼 수 있습니다. 우리가 원하는 콤보 상자는 다음 그림과 같이
고객 번호만 표시되는 것이 아니고, 회사명, 담당자명 등이 같이 보이는 콤보 상자였습니다. 지금은 그렇게 표시되지
않습니다.

<12> 우리가 행 원본 속성에서 4개의 열을 가진 쿼리를 지정하였지만, 콤보상자의 열 개수
속성은 기본값이 1로서, 행 원본 속성에서 지정한 열에 관계없이 콤보상자에서는 ‘열 개수’
속성에 지정된 개수의 열만 보여집니다. 따라서 우리가 행 원본 속성의 쿼리에서 4개의 열을 지정했다면 반드시
열 개수 속성도 4로 지정해야 합니다.

<13> 이제 데이터가 잘 표시되는지 살펴보겠습니다. 여전히 크게 다르지 않아 보입니다. 10번의
그림과 비교하여 보면, 다음 그림에서는 가로 스크롤 바가 있다는 것이 다르다는 것을 알 수 있을 것입니다. 10번의
그림에서는 열 개수 속성이 1이기 때문에 한 개의 열만 보이고 있지만, 다음 그림에서는 4개의 열이 보이긴 하지만,
다른 어떤 속성이 설정되지 않아 한 화면에 표시되지 않습니다.

가로 스크롤 바를 이용해 조금 오른편으로 이동해 보면 다음 그림과 같이 표시됩니다.이처럼 4개의 열이 모두 표시가
되기는 하지만 한 화면에 모두 표시가 되지 않고 있는 것이 문제입니다.

<14> 이 문제를 해결하기 위해서는 우선 열 너비 속성을 설정해야 합니다. 앞서
7번 그림에서 각 열의 너비가 2cm, 4cm, 2cm, 3cm 정도면 된다고 예측한 기억이
납니다. 그렇게 예측한 것을 열 너비 속성에 기록합니다.

<15> 이제 잘 보일 것이라는 기대를 가지고 폼 보기를 해 보았습니다. 다음 그림처럼 보이게 될
것입니다. 10번 그림과 비교해 볼 때, 고객 번호 필드의 너비가 조금 줄어들기는 하였지만, 여전히 한 화면에 모든
데이터가 보이지는 않습니다.

<16> 각 열의 너비는 설정하였지만, 콤보 상자의 전체 가로 너비는 설정하지 않았기 때문에 이러한
문제가 발생하는 것입니다. 목록 너비 속성에 다음 그림과 같이 설정합니다.

이전 데일리 팁에서 설명한 대로 ‘목록 너비’ 속성은 콤보상자에 표시될 각
열 너비의 전체 합에 0.5cm 를 더한 정도가 좋습니다. 열 너비가 ‘2cm, 4cm, 2cm,
3cm’ 이기 때문에,
2+4+2+3+0.5 = 11.5 가 되어 11.5cm 를 기록하였습니다.
<17> 이제 폼 보기를 클릭하면 우리가 원하는 대로 관련 데이터가 같이 조회되는 것을 볼 수 있습니다.

지금까지 다소 장황하게 콤보 상자 만드는 법에 대해 알아보았습니다. 여러분들은 이 예제를 통해 단순히 콤보 상자 만드는
방법을 ‘따라하기’ 방식으로 익히기 보다는, 각 단계별로 속성을 설정하고 그 때 콤보 상자가 어떻게 변화되는지 직접
파악해 봄으로써, 콤보 상자의 각 속성에 보다 익숙해지는 기회로 삼기 바랍니다.
실제로 필자가 콤보상자를 만들 때에도 이러한 순서로 만들고 있으며, 지금도 각 단계별로 콤보상자에 표시되는 방법을
확인하고 있습니다. 지금까지 알아본 내용을 바탕으로 여러분 업무에 많은 도움이 있었으면 좋겠습니다.