2007-01-23, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

액세스 쿼리나 폼을 디자인하다 보면, 계산식을 많이 이용하게 됩니다. 이 때, 계산식을 일일이 타이핑하는 것은 여간 불편한 것이 아닙니다. 오늘은 식 작성기를 이용하여 계산식을 보다 손쉽게 입력하는 방법에 대해서 알아보겠습니다.

우선 예제 파일을 다운로드 받기 바랍니다.
049_Sample.mdb

예제파일 다운로드



예제 파일에서 ‘q001_단가계산’ 쿼리는 손으로 타이핑하여 만든 계산식입니다. 다음 그림을 참고 바랍니다.


아주 간단한 계산식임에도 불구하고, 상당한 내용을 타이핑해야 합니다. 물론, 타이핑하다가 작은 실수라도 한다면, 액세스 쿼리는 오류 메시지를 출력하면서 실행되지 않겠지요.

‘금액’ 필드를 만들 때 ‘식 작성기’를 이용하면 보다 쉽게 계산식을 입력할 수 있습니다.

‘금액’ 필드를 만들기 위해 쿼리 디자인 보기의 빈 필드에서 마우스 오른쪽 버튼을 클릭해 봅니다. 그러면 다음 그림과 같은 팝업 메뉴가 나타납니다.


이 팝업 메뉴에서 ‘작성’을 클릭하면 다음과 같은 ‘식 작성기’가 나타납니다.


‘식 작성기’에는 데이터베이스에 저장된 모든 테이블, 쿼리, 폼, 보고서, 함수를 참조할 수 있는 링크가 담겨 있습니다. 우리는 ‘주문서_내역’ 테이블의 단가 필드에 수량 필드를 곱하는 계산식을 만들 것이므로, 식 작성기에서 ‘주문서_내역’ 테이블을 클릭하고, ‘단가’ 필드를 더블 클릭하면 앞의 그림과 같이 ‘주문서_내역’ 테이블의 ‘단가’ 필드를 가리키는 계산식이 자동으로 입력되는 것을 볼 수 있습니다.

마찬가지 요령으로 ‘수량’ 필드도 입력한 후 ‘확인’ 버튼을 클릭하면 다음 그림과 같이 ‘금액’ 필드에 대한 계산식을 편리하게 정의할 수 있습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2007-01-23, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

액세스는 엑셀과 달리 저장할 필드 단위로 데이터 형을 지정해 주어야 합니다. 엑셀은 데이터 형을 자동으로 지정해 주는 반면, 액세스는 데이터를 저장하기 전에 ‘미리’ 데이터 형을 지정해 주어야 합니다. 엑셀을 사용하다가 액세스를 접하게 되면 이해가 안 되는 부분이 몇 개 정도 있게 마련인데, 데이터 형을 ‘미리’ 지정해 주어야 한다는 것도 그런 요소 중 하나가 아닐까 합니다.

반면, 액세스는 엑셀에 비해 비교할 수 없을 정도의 데이터 처리 능력을 자랑합니다. 65,000개 레코드의 데이터를 정렬하는 데 엑셀은 수 초가 필요하지만, 액세스는 순식간에 처리합니다. 처리해야 할 데이터가 100만개를 넘어가게 되면, 액세스의 이런 장점은 눈이 부실 정도이지요.

데이터 형을 미리 지정하는 것은 이러한 성능 향상에 많은 도움이 되기 때문이라고 이해하기 바랍니다. 처음에는 다소 불편할지 모르지만, 처음 한 번만 불편하면 나중에는 향상된 성능에 아주 만족할 것입니다.

데이터 형을 결정하는 것은 꽤나 기술적인 내용을 많이 알아야 하고 어려운 일이기도 합니다. 오늘은 기술적인 내용을 가급적 제외하고, 결론 위주의 데이터 형을 결정하는 방법에 대해서 알아보겠습니다.

액세스는 데이터 형을 지정하는 데 두 단계를 이용합니다. 하나는 ‘데이터 형식’ 속성이며, 나머지 하나는 ‘필드 크기’ 속성입니다.


앞의 그림을 보면 알 수 있듯이, 테이블을 디자인할 때 1차적으로 ‘데이터 형식’ 속성을 통해 데이터 형의 ‘범주’를 지정해 주며, 세부적인 데이터 형은 ‘필드 크기’ 속성을 이용해서 지정합니다. ‘재고량’ 필드의 경우 ‘숫자’ 형식의 데이터가 저장되며, 저장되는 숫자의 크기는 -32768 에서 32767 까지 저장이 가능한 ‘정수’ 입니다.

어떤 데이터 형은 ‘필드 크기’ 속성을 추가로 지정할 필요가 없으며, 어떤 데이터 형은 ‘필드 크기’ 속성을 반드시 지정해 주어야 합니다. 내용이 너무 어렵다면, 1차적인 데이터 형인 ‘데이터 형식’ 속성만 잘 설정하고, 2차적인 ‘필드 크기’ 속성은 추가로 지정하지 않아도 대부분 큰 문제는 없는 것으로 이해해도 좋습니다. 따라서 오늘은 ‘데이터 형식’ 속성을 지정하는 팁에 대해서 알아보겠습니다.

본래, 인간이 처리하는 데이터의 가장 기본이 되는 것은 텍스트(text) 데이터 형입니다. ‘A’, ‘B’, ‘C’, ‘D’ 혹은 ‘가’, ‘나’, ‘다’, ‘라’ 혹은 ‘1’, ‘2’, ‘3’, ‘4’ 와 같은 문자 데이터를 말하는 것이지요. 우리가 흔히 사용하는 숫자를 문자 데이터 형식으로 저장해도 아무런 문제가 없습니다. 바꾸어 말하면, 데이터 형식을 지정하는 것이 어렵다면 무조건 ‘텍스트’ 형식의 데이터로 지정해도 데이터 저장에는 아무런 문제가 없다는 것입니다.

하지만 텍스트 형태로 지정된 숫자는 ‘계산’할 수 없으며, 텍스트 형태로 지정된 날짜는 ‘날짜 연산’을 수행할 수 없습니다. 따라서 우리는 해당 필드에 사용할 값을 미리 고려하여 적절한 데이터 형식을 지정해 주어야 합니다.

가장 기본적인 데이터 형식은 텍스트, 숫자, 날짜/시간 입니다. 문자를 저장해야 할 필드에는 ‘텍스트’ 필드를 이용하고, 숫자를 저장해야 할 필드에는 ‘숫자’를 이용합니다. ‘날짜/시간’ 데이터 형식은 ‘숫자’의 특수한 형태로 처리됩니다. 날짜 혹은 시간을 기록할 때 ‘날짜/시간’ 데이터 형식을 이용하면 액세스가 제공하는 풍부한 날짜 계산 함수를 이용하여 편리하게 날짜 및 시간 계산을 수행할 수 있습니다. (물론 속도도 아주 빠르지요.)

  • 문자 데이터의 저장

    • 문자 데이터를 저장할 때는 ‘텍스트’ 혹은 ‘메모’ 데이터 형식을 이용합니다.

    • ‘텍스트’와 ‘메모’의 가장 큰 차이는 저장 용량에 있습니다.

    • ‘텍스트’ 데이터 형식은 최대 255글자까지 저장을 할 수 있으며 ‘메모’ 데이터 형식은 65535 글자까지 저장할 수 있습니다. (참고: 한글이던 영문이던 액세스는 모두 1글자로 처리합니다. 예) 강  1글자, A  1글자)

    • 하지만 ‘텍스트’ 데이터 형식은 ‘인덱스’를 활용하여 데이터 검색 속도를 높일 수 있습니다.

    • ‘인덱스’란 데이터 검색을 빨리 하기 위한 도구로서 데이터의 양이 많을 때(수십만 건 이상) 보통 7~8배 이상의 성능 향상을 가져올 수 있는 도구입니다.

    • 결론: 문자 데이터의 경우, 255글자 이하라면 ‘텍스트’ 데이터 형식을, 255 글자를 초과하면 ‘메모’ 데이터 형식을 이용합니다.


  • 숫자 데이터의 저장

    • 숫자 데이터를 저장할 때는 ‘숫자’ 혹은 ‘통화’ 데이터 형식을 이용합니다.

    • 정수 형태의 숫자를 저장할 때는 어떤 데이터 형식을 이용해도 무방하지만, 소수 형태의 숫자를 저장할 때는 고민을 좀 해 봐야 합니다.

    • ‘숫자’ 데이터 형식을 지정하고 필드 크기 속성을 ‘실수’로 지정하면 소수를 저장할 수 있습니다.

    • 하지만 ‘실수’ 형태의 ‘숫자’는 소수점 계산(근사값 계산)을 수행하며, 계산 중간에 반올림 처리가 되므로 여러 계산이 중첩될 경우 부정확한 값으로 표시될 수 있습니다.

    • 반면, ‘통화’ 형식은 소수점 넷째 자리까지 표현 가능하며, 정수인 것처럼 계산하고, 계산 중간에 반올림 처리가 되지 않으므로 계산이 중첩되더라도 정확한 값을 계산할 수 있습니다.

    • 결론: 소수 형태의 데이터를 저장할 때, 정확한 계산을 필요로 하고 소수점 4자리를 넘어가는 정밀도를 요구하지 않을 때는 가급적 ‘통화’ 데이터 형식을 이용합니다.


  • 날짜 혹은 시간 데이터의 저장

    • 날짜 혹은 시간 데이터를 저장할 때는 ‘날짜/시간’ 데이터 형식을 이용합니다.

    • 간혹, ‘20060115’ 혹은 ‘2006-01-15’ 형태로 ‘텍스트’ 데이터 형식을 사용하는 경우도 많은데, 이럴 경우 날짜 연산 (오늘부터 6개월 후는? 오늘부터 3개월 이전 날짜는?)을 수행하는 데 많은 어려움이 따릅니다. (윤년, 윤달 계산 등)

    • 반면, ‘날짜/시간’ 데이터 형식을 이용하면 ‘DateAdd’, ‘DateDiff’, ‘DateSerial’ 을 비롯한 수십 개의 액세스 날짜 함수를 이용할 수 있어 편리하게 계산할 수 있습니다.

    • 결론: 날짜 혹은 시간 데이터를 저장할 때는 ‘날짜/시간’ 데이터 형식을 이용합니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2006-11-29, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

지난 데일리 팁에서는 매개변수 쿼리를 이용하여 데이터 조회에 융통성을 부여하는 것을 알아보았습니다. 오늘은 보다 더 편한 조건 입력을 위해서 대화상자를 이용하는 방법에 대해 알아보겠습니다.

우선 예제 파일을 다운로드 받기 바랍니다.
047_samples.mdb

예제파일 다운로드



다음 그림은 고객별 판매 실적 차트를 보기 위한 대화상자와 그 구현 예입니다. ‘고객별 판매 실적’ 이라는 대화상자가 표시되고, ‘시작일’과 ‘종료일’을 적절히 설정한 후 ‘보기’ 버튼을 클릭하면 해당 조건에 맞는 차트가 표시됩니다.


1997년 데이터를 조회한 결과는 다음과 같습니다.


오늘 알아볼 내용은 이러한 것을 어떻게 구현하는가 하는 것입니다. 엑셀에서 이러한 것을 구현하려면 상당한 프로그래밍 작업을 해야 하지만, 액세스에서는 프로그래밍 작업이 거의 없이 이러한 것을 구현할 수 있습니다.

우선 대화상자를 이용하기 위해서 다음 그림과 같이 대화상자 폼을 디자인 합니다.


여기에서 ‘시작일’ 에 해당하는 텍스트 상자는 ‘txt시작일’, ‘종료일’에 해당하는 텍스트 상자는 ‘txt종료일’로 이름을 할당하였습니다.

지난번 데일리 팁에서 작성했던 매개변수 쿼리를 변경해야 합니다. 매개변수 쿼리에서 우리가 만든 대화상자의 ‘시작일’과 ‘종료일’의 값을 가리키도록 해 주면 됩니다.


예전 매개변수 [시작일] 대신 [forms]![f004_대화상자]![txt시작일] 이라는 폼 참조식이 들어갔으며, [종료일] 대신 [forms]![f004_대화상자]![txt종료일] 이라는 폼 참조식이 들어갔습니다.

폼 참조식의 일반형은 다음과 같습니다.

[forms]![폼이름]![컨트롤이름]


여기에서 ‘[폼이름]’은 ‘f004_대화상자’ 이며, ‘[컨트롤이름]’은 ‘txt시작일’ 이므로 다음과 같은 폼 참조식을 만들어 이용할 수 있습니다.

[forms]![f004_대화상자]![txt시작일]


‘q004_고객별 판매 실적_날짜조건’ 쿼리가 실행되면 폼 참조식의 컨트롤을 참조하여 우리가 원하는 대로의 데이터를 보여주게 됩니다.

다음은 기존에 매개변수 쿼리를 이용해 만들었던 차트의 데이터 원본을 변경해야 합니다. 다음 그림처럼 레코드 원본 속성을 ‘q003_고객별 판매 실적_날짜조건’ 에서 ‘q004_고객별 판매 실적_날짜조건’ 으로 변경합니다.


이렇게 하면 아주 편하게 원하는 조건을 선택하고 그에 따른 데이터 필터를 할 수 있게 됩니다. 이러한 작업을 하는데 필요한 프로그래밍 작업은 거의 없으며, 이러한 패턴을 응용하면 여러분의 업무를 정형화 하는데 많은 도움이 될 것입니다.

이번 액세스 실무 활용 과정에서는 이러한 점을 중점으로 하여 진행됩니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2006-11-27, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

액세스에서 쿼리를 이용하면 우리가 원하는 데이터를 쉽게 조작하여 볼 수 있습니다. 오늘은 이러한 조작에 융통성을 부여하는 작업을 알아보도록 하겠습니다.

우선 예제 파일을 다운로드 받기 바랍니다.

046_samples.mdb

예제파일 다운로드



예제 파일에서 ‘q001_1996년 실적’ 이라는 이름의 쿼리를 디자인 보기로 열면 다음과 같습니다.


고객별 실적을 계산하는 쿼리이며, 날짜 조건에 ‘BETWEEN A AND B’ 구문을 이용하여 1996년 실적만을 추출하도록 디자인 하였습니다.

1997년 실적을 보고 싶을 때는 어떻게 할까요? 해당 쿼리를 열어서 1996이라고 표시된 것을 1997로 변경시켜주면 되겠지요? 필요하다면 쿼리를 다른 이름으로 저장하면 되겠구요.

다음 그림은 이 쿼리를 부분적으로 수정하여 1997년 실적으로 저장한 내용입니다.


이 정도만 활용하여도 엑셀에서의 데이터 처리보다 한결 편하게 이용할 수 있습니다. 엑셀에서 자동 필터를 이용하면 데이터를 유연하게 찾을 수 있지만, 다른 조건을 찾았다가 다시 원래 조건으로 돌아오는 것이 꽤나 번거로왔을 것입니다. 하지만 액세스를 이용하면 이처럼 ‘조건을 저장’하여 데이터를 불러오는 규칙을 저장할 수 있어 편리합니다.

다음은 별도로 저장된 쿼리에 의한 데이터 결과값입니다. 1996년과 1997년의 ‘원창㈜’의 실적이 다름을 알 수 있습니다.



하지만 매 년 이러한 조건을 변경하여 저장하는 것이 과연 좋은 방법일까요? 혹시 분기별로 실적을 보고 싶다면 어떻게 해야 할까요? 혹시 월별로 실적을 보고 싶다면? 수없이 많이 저장된 쿼리에서 어떤 하나를 찾아내는 작업이 오히려 어려워지지 않을까 합니다.

그래서 오늘 공부할 내용인 ‘매개변수 쿼리’를 이용하여 이러한 쿼리 활용에 융통성을 부여해 보도록 하겠습니다.

‘매개변수 쿼리’를 이용하는 것은 아주 쉽습니다. ‘조건’에 해당하는 곳을 다음 그림과 같이 매개변수로 대치하면 됩니다.


매개변수로 대치할 때는 다음의 규칙을 따라야 합니다.
  • 매개변수명을 대괄호([])로 둘러싸 줍니다.

  • 매개변수명은 한글, 영문, 숫자를 비롯한 대부분의 특수문자를 허용하지만 ‘_’를 제외한 특수문자는 이용하지 않는 것이 좋습니다.

  • 매개변수명은 해당 쿼리에 등록된 필드명과 달라야 합니다. (앞의 그림에서 [UnitPrice] 라고 매개변수명을 할당하면 이것은 매개변수로 동작하는 것이 아니고, 필드 값을 가져오는 결과를 나타냅니다.)

  • 따라서, 매개변수명에 접두어 ‘prm’을 붙여 [prmUnitPrice] 와 같이 이용하는 것이 좋습니다.


이렇게 매개변수화 된 쿼리를 실행하면 쿼리 실행 시점에 다음 그림과 같이 매개변수 값을 물어옵니다. 여기에서는 [시작일] 과 [종료일]을 물어오겠죠? (데이터베이스 창에서 ‘q003_고객별 판매 실적_날짜조건’ 이라는 이름의 쿼리를 실행해 보기 바랍니다.)


이에 대한 쿼리 결과값입니다.


쿼리를 닫고 다시 시작합니다. 시작일을 1997-1-1, 종료일을 1997-12-31 로 하게 되면 다음과 같은 결과를 얻습니다.


매개변수 쿼리가 가지는 가장 큰 장점은 데이터를 추출할 때 ‘정형화’ 할 수 있다는 점입니다. 우리가 1996년 실적, 1997년 실적 등으로 저장한 것이 아니고, 데이터의 형태에 따라 ‘고객별 판매 실적’이라는 이름으로 쿼리를 저장할 수 있다는 것 자체가 많은 융통성을 발휘하게 해 주는 것이지요. 매개변수 쿼리를 잘 활용하면 여러분의 업무에서 자주 조회하는 데이터를 정형화 하여 쉽게 볼 수 있게 됩니다.

마지막으로 응용 예를 한 번 살펴보겠습니다. 우리가 만든 ‘q003_고객별 판매 실적_날짜조건’ 쿼리를 바탕으로 하여 차트를 만들었습니다. (폼: f003_고객별 판매 실적_날짜조건)

데이터베이스 창에서 이 폼을 실행하면 우선 매개변수 쿼리가 동작하여 시작일과 종료일을 물어옵니다. 적당한 날짜를 입력하면 다음 그림과 같이 멋진 차트가 보여집니다. 이 그림은 1996년 데이터를 조회한 것입니다.


폼을 닫고 다시 열어, 1997년 데이터를 조회하면 다음과 같습니다.


이처럼 매개변수 쿼리를 이용하게 되면 ‘데이터 추출’ 작업을 보다 손쉽고, 정형화 할 수 있는 장점이 있습니다. 다음 데일리 팁에서는 매개변수 쿼리에서 한 발 앞서 나간 ‘대화상자를 이용한 정형화’에 대해서 알아보겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2006-09-06, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

한국 사람이라면, 컴퓨터를 사용하면서 누구나 느끼는 불편함이 있을 것입니다. ‘한/영 전환 문제’는 ‘영어’를 전용어로 사용하는 사람이 아니라면 누구나 느끼는 불편함일 것입니다.

필자는 가끔, 영어 문화권에 태어났었더라면 참 좋았겠다 는 생각을 합니다. 인터넷에는 정말 좋은 자료가 많이 있는데, 영어로 된 자료가 가장 많습니다. 한글로도 좋은 자료가 많이 있겠지만, 인구 비로 단순 비교하더라도 영어로 된 자료가 훨씬 많고, 품질도 좋으리라는 것은 재론의 여지가 없습니다.

꼭, 영어를 잘 하고 못하고의 문제가 아니더라도, 컴퓨터를 이용하다가 보면 필연적으로 영어 문자를 타이핑해야 합니다. 최소한 인터넷 웹사이트에 로그인을 하더라도 한글로 되어 있는 입력기 상태를 변경해서 영어로 변경해야 하는 것이지요.

누구나, 한참을 타이핑 하였는데 그것이 내가 의도하지 않은 문자 (예를 들면 dkssudgktpdy? – 안녕하세요?) 인 경험을 많이 해 보았을 것입니다. 우리가 한글을 쓰는 한 지속적으로 가져가야 할 불편함이겠죠? (한글을 쓰지 말자는 뜻은 아닙니다. 한글은 정말 훌륭한 언어이며, 문자 체계입니다.)

Access에서는 이러한 문제를 조금이라도 해결하고자 컨트롤 마다 기본값으로서 ‘한/영 전환 모드’ (이하 ’IME 모드’로 통칭합니다) 를 설정할 수 있도록 해 놓았습니다. 그리고 특별한 설정 없이 컨트롤을 등록하게 되면 ‘IME 모드’가 ‘한글’로 설정되어 이전의 IME 모드가 무엇이었든지 관계없이 ‘한글’ 입력 상태로 변하게 됩니다.

그림과 예로서 알아보도록 하겠습니다.
  1. 다음은 ‘Products’ 입력폼 입니다. 현재 ‘제품 분류’ 필드에 커서가 있는 것을 확인할 수 있습니다. IME 모드는 ‘한글’ 상태입니다.

  2. 커서가 ‘포장 단위’로 와 있습니다. ‘포장 단위’는 영어로 입력해야 합니다. IME 모드는 현재 한글상태 입니다.

  3. 영어를 입력하기 위해 IME 입력상태를 ‘영어’로 변경하였습니다.

  4. 커서가 ‘비고’에 왔습니다. 여기에서 문제가 발생합니다. Access의 기능에 의해 IME 상태가 자동으로 ‘한글’로 변경되었습니다.
    여기에서 두 가지로 생각해볼 수 있습니다. 첫 번째는 ‘비고’ 필드는 주로 한글이 입력되므로 좋은 기능으로 여길 수 있다는 점입니다. 두 번째는, 데이터 입력을 진행하는 가운데, 사용자가 IME 모드가 여전히 ‘영어’에 있는 것으로 판단, 한영 전환을 수동으로 했을 때 실제로 IME 모드는 ‘영어’ 상태가 되므로 이 기능이 오히려 불편할 수 있다는 점입니다.


예를 든 것처럼, 자동으로 IME 모드를 지정해 주는 것은 때때로 오히려 불편할 수 있습니다. 데이터를 지속적으로 입력하는 사람은 IME 모드를 기억하고 있기 때문입니다.

그래서 필자는 IME 모드를 어떤 것으로 설정하기 보다는 ‘현재 상태 유지’로 하기를 권장합니다. IME 모드를 ‘현재 상태 유지’로 하게 되면, Access는 IME 모드 설정에 어떠한 관여도 하지 않게 되며, 사용자가 수동으로 IME 모드를 전환해야 합니다.

그러면 IME 모드를 ‘현재 상태 유지’로 하는 방법에 대해서 알아보겠습니다.

  • ‘IME 모드’ 속성은 입력이 가능한 컨트롤 (텍스트 상자, 콤보 상자 등) 개별적으로 지정 가능한 속성입니다. 폼 하나에 일괄적으로 설정할 수 없는 속성입니다.

  • ‘IME 모드’ 속성 설정을 변경할 컨트롤을 선택하고 속성 창을 엽니다. ‘기타’ 탭에 ‘IME 모드’ 라는 속성이 있습니다.

  • ‘IME 모드’ 속성을 ‘현재 상태 유지’로 변경합니다. 이제 이 컨트롤은 앞으로 IME 모드 속성을 이전 상태를 그대로 따를 것입니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2006-09-04, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: Access 2002, 2003

Access 2002 이후로 액세스 창이 작업표시줄에 표시되는 방법이 변경되었습니다. Access 2000 까지는 Access 창 안에 보여지는 테이블, 쿼리, 폼, 보고서 등의 개체가 작업표시줄에 표시되지 않았습니다. 하지만 Access 2002 부터는 기본값으로 테이블, 쿼리, 폼, 보고서 등의 개체가 열리게 되면 작업표시줄에 표시됩니다.


앞의 그림은 기본값 상태의 화면입니다. Access 안에 ‘Categories’, ‘Customers’, ‘Employees’ 의 3개의 폼이 열려 있으며, 각각의 폼이 작업표시줄에 표시되어 있는 것을 볼 수 있습니다.

이러한 것은 개인의 선호도에 따라 예전 방식을 더 좋아할 수 도 있다고 생각합니다. 아울러 Access 안에 몇 개의 화면만 표시된다면 보다 좋은 방법일 수 있겠으나, Access 안에 여러 개의 화면을 열고 사용한다면 다음 그림과 같이 오히려 작업표시줄이 너무 복잡해 보이게 됩니다.


그래서, 경우에 따라서는 Access 2000 의 형식과 같이 작업 표시줄에 하나의 표시만 나타나는 것을 선호하게 될 수도 있습니다.

Access 창 안에 몇 개의 창이 열려 있든 작업표시줄에 하나의 Access 개체만 표시하는 방법은 다음과 같습니다.
Posted by Kiwoong~
2006-06-07, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

043_samples.mdb

예제파일 다운로드



오늘은 지난번 데일리 팁에 이어 액세스에서 유용한 바로 가기 키에 대해서 알아보도록 하겠습니다.

1. [Shift+F2]: 입력란 작을 때 크게 편집
일반적으로 액세스에서 입력 화면을 만들게 되면 대부분은 큰 문제가 없지만, 예상외로 가변적인 크기의 데이터 때문에 입력 화면의 컨트롤에 모든 내용이 표시되지 않고 잘리게 되는 경우가 종종 있게 됩니다. 이 때 [Shift+F2] 바로 가기 키를 이용하면 이러한 문제를 부분적으로 해결할 수 있습니다.

다음 그림은 주문서에 새로운 데이터를 입력하는 화면입니다. ‘수하인 주소’ 필드에 ‘서울특별시 강남구 대치4동 959-11 한진오피스텔 708호’ 라는 주소를 입력하였습니다. 컨트롤의 가로 길이가 충분치 않아서 잘려있는 것을 볼 수 있습니다.


이 때, [Shift+F2] 바로 가기 키를 누르면 다음 그림과 같이 ‘확대/축소’ 창이 나오게 되며, 이 창의 넓은 공간에서 적당한 내용을 입력한 후 ‘확인’ 버튼을 클릭하면 변경된 내용이 저장됩니다.


물론, 가장 좋은 방법은 표시될 데이터의 가변성을 정확히 예측하여 넉넉한 공간을 디자인하는 것이 더 좋겠지만 대부분 한정된 하나의 화면에 모든 컨트롤에 넉넉한 공간을 배정할 수 없는 경우가 많을 것입니다. 이 때 [Shift+F2] 키를 이용하면 이러한 문제는 부분적으로 해결할 수 있게 됩니다.

2. 속성 창에서의 마우스 더블 클릭: 다음 항목 선택
다음은 폼 디자인 시에 보다 편하고 빠르게 속성 항목을 선택하는 방법에 대하여 알아보도록 하겠습니다.

다음 그림은 액세스 폼 디자인 보기 화면입니다. 여기에서 ‘CompanyName’ 이라는 컨트롤의 글꼴을 변경한다고 가정해 보겠습니다. 이러한 작업은 일반적으로 ‘속성 창’의 ‘글꼴 이름’ 속성의 콤보상자를 마우스로 클릭하여 나타난 목록에서 어떤 항목을 선택하는 방식으로 수행합니다. 하지만 ‘속성 창’에서 보이는 모든 콤보상자는 더블 클릭하게 되면 해당 속성이 다음 항목(본 그림에서는 ‘굴림체’)으로 변경됩니다. 이는 특히 속성의 선택사항이 그리 많지 않을 때, 빠르게 해당 속성을 선택하는 데 아주 유용합니다.


3. 기타 유용한 바로 가기 키
[F11]: 데이터베이스 창 불러오기
이 바로 가기 키는 데이터베이스 창(다음 그림 참고)을 불러오는 키입니다. 액세스에 포함되어 있는 ‘테이블’, ‘쿼리’, ‘폼’, ‘보고서’, ‘페이지’, ‘매크로’, ‘모듈’ 등의 개체를 편집하기 위해서는 데이터베이스 창이 전면에 나타나 있어야 하는데, 많은 작업들 속에 데이터베이스 창이 전면에 보이지 않는 경우가 있습니다. 이 때 [F11] 키를 누르면 데이터베이스 창이 전면에 표시됩니다.


[Ctrl+,]: 폼 보기 순환, 역순
[Ctrl+.]: 폼 보기 순환, 정순

이 바로 가기 키는 폼 디자인을 편집할 때 아주 유용합니다. 폼을 디자인 보기 모드에서 편집한 후, 실제 실행 상황을 확인하기 위해서는 폼 보기로 전환해야 합니다. 이 때 일반적으로 마우스를 이용하게 되는데, 이 바로 가기 키를 이용하면 보다 빠르기 폼 보기 사이의 전환을 수행할 수 있습니다.

지금까지 액세스에서 사용하는 주요 바로 가기 키에 대해서 알아보았습니다. 바로 가기 키는 파워 유저로 가는 첫걸음이며, 효율적인 업무처리에 많은 도움을 줍니다. 액세스 바로 가기 키에 대해서 보다 자세한 사항은 액세스 도움말에서 ‘바로 가기 키’ 혹은 ‘단축키’로 검색해 보기 바랍니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2006-06-05, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

042_samples.mdb

예제파일 다운로드



액세스 작업을 할 때 바로 가기 키를 이용하면 훨씬 현명하게 데이터 처리 작업을 수행할 수 있습니다. 오늘 알아 볼 내용은 기본적인 바로 가기 키(Ctrl-C, Ctrl-X, Ctrl-V 등의 표준 바로 가기 키)에 대한 것이기 보다는 액세스 고유의 바로 가기 키에 대해서 알아보도록 하겠습니다.

1. [F9]: 콤보상자, 목록상자 새로 고침
[F9] 라는 단축키는 폼에서 콤보상자 및 목록상자를 새로 고쳐주는 기능을 가지고 있습니다. 다음과 같은 시나리오를 생각해 보겠습니다.

다음 그림은 주문서에 새로운 주문을 입력하는 화면입니다. 제일 처음에 입력해야 하는 것은 ‘고객’을 입력하는 필드입니다. 신규 고객인 ‘1_테스트고객’이 새로운 주문을 요청했습니다. 그런데 이 고객이 새로운 고객이라면 주문서에 주문을 등록하기에 앞서 ‘고객’ 테이블에 고객 정보를 먼저 입력해야 할 것입니다.


다음 그림은 ‘고객’ 입력 폼에서 새로운 고객 정보를 입력하는 화면입니다. 이 화면에서 신규 고객으로 등록해야 주문서 입력 시 고객을 선택할 수 있습니다.


이제 다시 주문서 입력 화면으로 돌아왔습니다. 이 때, 주문서 입력 화면을 새로 열지 않는다면 ‘고객’을 입력 받는 콤보상자는 새로운 고객정보를 보여주지 않습니다. 이러한 상황은 많이 겪게 되는 일 입니다. 이 때의 일반적인 해결 방법은 현재 주문서 입력 폼을 닫았다가 다시 여는 방법 밖에는 없습니다. 주문서 폼이 새로 열리게 되면 데이터베이스에서 현재 고객의 정보를 다시 불러오기 때문에 괜찮은 해결방법은 되겠지만, 새로운 고객이 등록될 때 마다 입력 화면을 닫고 다시 열어야 하니 매우 불편한 방법입니다.


이 때, 바로 가기 키를 이용하면 간단히 해결할 수 있습니다. [F9] 키를 누르면 다음 그림과 같이 ‘고객’ 콤보상자에 방금 등록한 새로운 고객이 보이는 것을 확인할 수 있습니다.


이 바로 가기 키는 매우 유용합니다. 지금 예로 들었던 이러한 시나리오는 실제 업무 진행 시 빈번하게 발생하는 것이며, 많은 분들이 폼을 닫고 다시 열곤 하는 것을 보아 왔습니다. 단순히 [F9] 키를 눌러서 이러한 문제를 해결하기 바랍니다.

[F9] 바로 가기 키는 현재 커서가 위치한 콤보상자만 새로 고쳐주는 것은 아닙니다. 현재 폼의 모든 콤보상자를 새로 고쳐줍니다. 따라서 조금 전의 시나리오처럼 ‘고객’ 란에 커서를 위치시키고 [F9] 키를 누르지 않아도 무방합니다. 예를 들어 ‘수하 지역’에 커서가 있는 상태에서 [F9] 키를 눌러도 같은 결과를 얻을 수 있습니다.

하지만 이 바로 가기 키는 하위 폼의 콤보상자 및 목록상자까지 새로 고쳐주지는 않습니다. 이번 시나리오에서 ‘제품’ 입력란도 콤보상자로 되어 있습니다. 하지만 상위 폼 컨트롤인 ‘고객’ 란에 커서가 위치한 상태이고, 이 때 [F9] 키를 누른다 해도 ‘제품’ 콤보상자는 새로 고쳐지지 않습니다. 바로 가기 키를 이용하여 ‘제품’ 콤보상자를 새로 고치기 위해서는 커서가 하위 폼에 있는 상태(커서가 ‘주문 번호’, ‘제품’, ‘단가’, ‘수량’, ‘할인율’, ‘금액’ 중 한 곳에 있는 경우)에서 [F9] 키를 눌러야 합니다.

요약하면 다음과 같습니다.
  • [F9] 키를 이용하면 콤보상자와 목록상자의 목록을 새로 고침 할 수 있습니다.

  • 이 때, 커서의 위치에 관계 없이 현재 폼의 모든 콤보상자와 목록상자의 목록이 새로 고쳐집니다.

  • 하지만, 여기서 ‘현재 폼’의 범위는 ‘하위 폼’ 혹은 ‘상위 폼’을 포함하지는 않습니다. ‘하위 폼’ 혹은 ‘상위 폼’의 콤보상자 및 목록 상자를 새로 고치려면 커서가 해당하는 ‘하위 폼’ 혹은 ‘상위 폼’에 가 있어야 합니다.


2. [F4]: 콤보상자의 목록 펼치기

콤보상자에 커서가 있을 때, [F4] 바로 가기 키를 누르면 콤보상자의 목록이 펼쳐집니다. 다음 그림은 이러한 예를 보여줍니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-11-03, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

041_samples.mdb

예제파일 다운로드



액세스로 보고서를 만들 때, 출력해 놓고 보면 컨트롤의 크기가 충분치 않아 데이터가 잘려서 표시되는 경험은 누구나 한번쯤 겪어봤을 일입니다. 다음의 보고서는 그런 상황을 잘 보여주고 있습니다.


이 보고서는 제품 목록을 표시하는 보고서인데, 첫 번째 레코드에 ‘노르웨이 연어알’ 이라고 표시되어 있는 것을 볼 수 있습니다. 원래 제품명은 ‘노르웨이산 연어알조림’으로, 보고서의 컨트롤 크기가 작아 모든 데이터를 표시할 수 없어 잘리게 된 상황이지요.
이러한 점을 해결하기 위해서 ‘제품 이름’에 해당하는 컨트롤의 너비를 확장하는 것도 좋은 방법이겠지만, 앞의 보고서에서는 한 페이지에 보여줄 데이터가 너무 많아 ‘제품 이름’ 컨트롤을 넓히는 것도 여의치 않아 보입니다.
우리들이 부딪히는 문제가 보통 이렇지요. 이렇게 할 수도 없고, 저렇게 할 수도 없고…
그러면 다음 과정을 통해 문제를 해결해 보도록 합시다.


해당하는 보고서를 열고, ‘ProductName’ 컨트롤의 속성을 살펴봅니다. 여기에서 ‘확장 가능’ 속성을 ‘예’로 해 놓으면 다음 그림과 같이 보여지게 됩니다.


어떻습니까? ‘제품 이름’이 너무 길면 다음 줄에 표시되는 것을 볼 수 있습니다. 이처럼 보고서에서 ‘텍스트 상자’ 컨트롤에는 ‘확장 가능’ 속성이 있어 데이터가 잘리는 것을 방지할 수 있습니다.

‘확장 가능’ 속성은, 원래 디자인 보기에 있었던 컨트롤의 크기를 기본적으로 유지하면서 데이터가 잘릴 경우에 자동으로 수직적으로 컨트롤 크기를 확장하여 데이터를 잘리지 않게 해 주는 속성입니다.

이와 더불어 ‘축소 가능’ 속성은, 원래 디자인 보기에 있었던 컨트롤의 크기를 무시하고 데이터에 맞게끔 컨트롤을 축소해 주는 속성입니다. 이 속성은 그리 많이 쓰이지는 않지만, 이러한 속성이 있다는 것을 알고 있으면 여러 가지 재미있는 응용을 할 수 있습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-10-25, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

040_samples.mdb

예제파일 다운로드



보통 보고서를 만들면 데이터를 기준으로 하여 다음 그림과 같이 만들게 됩니다. (예제 파일에서 ‘Alphabetical List of Products’ 보고서 참고)


잘 안보이나요? 확대해 보면 다음과 같이 볼 수 있습니다.


보통은 이 정도로 끝내는 경우가 많은데, 이는 액세스 보고서의 막강한 기능을 얼마 사용하지 않는 것입니다. 각 회사마다 업무가 다르겠지만, 데이터베이스의 데이터를 바탕으로 제품목록 브로셔를 멋지게 만든다거나, 임직원 명부를 멋지게 만들기 위해서는 표지 디자인에 신경을 써야 할 것입니다. 앞서 살펴본 보고서는 데이터 위주로 출력되었기 때문에 ‘브로셔’ 같은 효과를 볼 수 없습니다.

하지만 다음과 같은 보고서는 어떨까요? (예제 파일에서 ‘Catalog’ 보고서 참고)


제목도 그럴 듯 하지요? ‘가을 신상품 목록’ 이라는 제목을 가지고 있습니다. 다음 페이지를 살펴보면…


이처럼 데이터가 표시되기 전에 멋들어진 문구를 넣을 수도 있습니다. 아주 멋지지는 않지만, 응용하기에 따라서는 얼마든지 데이터에 기반한 브로셔를 만들 수 있습니다. 이 다음 페이지는 ‘본문’ 영역입니다.


그리고 브로셔답게, 마지막 페이지에는 주문서 양식도 삽입하였습니다.


어떻습니까? 액세스 보고서를 이용하면 이처럼 데이터에 기반한 브로셔를 손쉽게 만들 수 있습니다. 그러면 지금부터 이러한 보고서를 만드는 비밀에 관해서 알아보도록 하겠습니다.

다음 그림은 ‘Catalog’ 보고서의 디자인 보기 화면입니다.


  1. 보고서 머리글 영역: 비밀은 그리 먼 곳에 있지 않습니다. 보통의 보고서 디자인에서는 보고서 머리글이 첫 페이지보다 작기 때문에 데이터와 보고서 머리글이 같이 출력되지만, 이러한 브로셔 효과를 보기 위해서는 보고서 머리글 영역을 한 페이지보다 넓게 잡아서 ‘표지’처럼 출력하면 되는 것입니다.

  2. 두 번째 페이지 디자인을 위한 페이지 나눔 개체: 이 부분은 보고서 머리글 영역을 두 개 이상의 영역으로 나누기 위한 것입니다. 페이지 나눔 개체를 삽입하면 해당 부분 이후는 다음 페이지에 인쇄됩니다.

  3. 보고서 바닥글 영역: 이 부분에는 ‘주문서’ 양식을 만들어 놓았습니다.


어떻습니까? 원래 세상사가 그렇듯, 비밀은 알고 보면 정말 별 것 아니지요?

하지만 이러한 것을 응용하면, 브로셔 뿐만 아니라 ‘일일 업무 보고’ 같은, 그 동안 Microsoft Word 등의 문서로 수작업 했던 것을 데이터에 기반한 자동 문서로 얼마든지 전환할 수 있습니다. 많은 활용 있기 바랍니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-09-04, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

오늘은 이전 데일리팁에서 언급한 대로, 대화상자 폼을 통한 보고서 보는 방법에 대한 것을 알아보도록 하겠습니다. 다음 그림과 같은 대화상자 폼에서 조건을 적절히 지정하고 ‘보기’ 버튼을 클릭하면,


다음과 같은 보고서가 출력됩니다. 물론, 대화상자 폼에서 지정한 대로 ‘시작일’과 ‘종료일’에 지정한 조건에 맞는 데이터만 출력됩니다. 이것은 아주 기본적인 예제이지만, 이 예제를 잘 기억해 놓고 활용한다면 여러분들 응용프로그램 전반에 걸쳐 아주 훌륭한 테크닉이 될 수 있으리라 생각합니다.


Examples_039.mdb

예제파일 다운로드



실습 예제 따라하기
  1. 우선 다음 그림과 같이 쿼리를 구성합니다. 이 때 ‘OrderDate’의 조건에 들어가는 것은 다음과 같습니다.
    Between [forms]![대화상자2_맞음]![txtStartDate] And [forms]![대화상자2_맞음]![txtEndDate]
    이것은 BETWEEN [A] AND [B] 구문을 활용한 것으로서 [A] 와 [B] 에 해당하는 ‘조건’값 대신 폼 참조식을 이용하여 구성하는 것입니다. 물론 이 때 폼 참조식으로는 대화상자의 폼을 지정하도록 해야 합니다. 이 예제에서는 폼 이름이 ‘대화상자2_맞음’, 시작일 컨트롤 이름이 ‘txtStartDate’, 종료일 컨트롤 이름이 ‘txtEndDate’ 이기 때문에 이러한 식으로 구성된 것입니다.

  2. 이제 이 쿼리를 기반으로 한 보고서를 다음 그림과 같이 만듭니다. 이 보고서에는 특별한 다른 기능은 구현되지 않았습니다.

  3. 대화상자 폼을 다음과 같이 디자인 합니다.

  4. 이 대화상자 폼에서 ‘보기’ 버튼을 클릭했을 때 보고서가 화면으로 출력되도록 만들어 봅시다. ‘보기’ 버튼의 속성창을 보면 다음과 같습니다. ‘On Click’ 이벤트에서, 만들기 버튼(… 표시된 버튼)을 클릭하여 새로운 매크로를 만들면 됩니다. 이것은 사용자가 ‘보기’ 버튼을 클릭하였을 때 보고서를 열어준다는 의미를 가지고 있습니다.

  5. 매크로 함수는 다음과 같이 디자인합니다. 동작은 보고서를 여는 것이니 ‘매크로 함수’로는 ‘OpenReport’ 함수를 지정합니다. ‘매크로 함수 인수’로는 다음 그림과 같이 지정하는데, 여기서 중요한 것은 ‘보고서 형식’ 입니다. ‘보고서 형식’을 ‘인쇄’로 선택하게 되면 바로 프린터로 출력되므로 주의하기 바랍니다.


지금까지 대화상자 폼을 이용한 보고서 출력하는 방법에 대해서 알아보았습니다. 이 방법은 액세스를 이용한 보고서 출력의 가장 기본이 되는 방법이므로 잘 익혀놓기 바랍니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-08-26, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

오늘부터 2회에 걸쳐서 ‘대화상자’ 만드는 방법에 대해서 알아보겠습니다. 대화상자는 일반적인 데이터 입력폼과는 달리, 사용자로부터 어떤 ‘옵션’에 해당하는 값을 편안히 입력받기 위한 폼입니다. 일반적인 데이터 입력폼에서 입력한 값은 데이터베이스에 저장되지만, 대화상자 폼에서 입력한 값은 데이터베이스에 저장되지 않습니다.

Examples_038.mdb

예제파일 다운로드



다음 그림은 일반적인 데이터 입력폼의 예입니다.


다음 그림은 일반적인 대화상자 폼의 예입니다.


어떻습니까? 첫번째 폼은 왠지 데이터를 입력해야 할 것 같고, 두번째 폼은 왠지 데이터를 보기 위한 조건을 지정해야 할 것처럼 생기지 않았습니까? 사용자에게 직관적인 느낌을 주는 것은 응용프로그램을 만들 때 정말 중요한 요소가 아닐 수 없습니다.

대화상자 폼은 일반적인 폼과 그 생김새가 상당히 많이 다릅니다. 다음 그림은 일반적인 폼 형태의 대화상자 폼입니다. 어쩐지 어색한 느낌을 지울 수가 없지요?


이렇게 생긴 일반 폼을 다음 그림과 같이 대화상자 폼으로 만드는 것을 익혀 봅시다.


이 폼에서 일단 시각적으로 고쳐야 할 부분은 다음과 같습니다.

  1. 레코드 선택기: 입력한 하나의 레코드를 선택하는 도구로서, 대화상자에는 필요치 않습니다.

  2. 탐색 단추: 레코드 간의 이동을 위한 도구로서, 대화상자에는 필요치 않습니다.

  3. 스크롤 막대: 폼에 보이지 않는 컨트롤이 있을 때 화면 스크롤을 위한 도구로서, 대화상자에는 필요치 않습니다.

  4. 최소화 최대화 단추: 폼의 크기를 조절하는 도구로서, 대화상자에는 필요치 않습니다.


이러한 부분을 고치기 위해서는 이 폼의 폼 속성을 다음과 같이 수정하면 됩니다.


이것이 대화상자를 만드는 폼 스타일의 템플릿입니다. 잘 기억해 놓고 계속 이용하기 바랍니다. 다음 데일리 팁에서는 실제로 이러한 대화상자를 통해 어떻게 보고서를 보이게 하는지에 대해서 알아보도록 하겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-06-28, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

지난 데일리 팁에서는 콤보상자 사용자 정의 기능에 대해서 이론적으로 알아보았습니다. 이번 데일리 팁에서는 지난 데일리 팁에서 약속한대로 콤보상자를 만드는 방법을 따라하기를 통해 알아보도록 하겠습니다.

다음의 링크를 클릭하여 예제파일을 다운로드 받기 바랍니다.

Examples_037.mdb

예제파일 다운로드



다음 그림은 지난 데일리 팁에서 알아보았던 콤보상자의 속성을 도식화 한 것입니다.



이 콤보상자는 빈 폼에 ‘고객’정보를 보여주고 있습니다. 지금부터 이러한 형식을 보여주는 콤보상자를 만들어 보도록 하겠습니다.

  1. 예제 파일을 열고, 그림과 같이 빈 폼을 하나 만듭니다. 그리고 콤보상자를 하나 추가합니다. 혹시 콤보상자 마법사가 표시되면 ‘취소’ 버튼을 클릭하여 마법사 모드를 종료합니다.

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

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

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

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

  6. 우리는 콤보상자에 ‘고객 번호’, ‘회사명’, ‘연락처’, ‘직위’ 정보가 표시되게 하고 싶습니다. 따라서 다음 그림과 같이 쿼리를 디자인합니다.
    이 때 주의할 점은 ‘콤보상자’에서 지정하는 행 원본은 항상 어떤 기준에 의해 정렬되어야 한다는 점입니다. 콤보상자를 쓰는 이유는 ‘검색’을 편리하게 하기 위함입니다. 그런데 어떤 기준에 의해 정렬되어 있지 않은 상태라면 검색이 상당히 불편하게 될 것입니다. 이 예제에서는 ‘고객 목록’을 보고자 하므로, ‘회사명’ 필드를 기준으로 정렬하는 것이 타당하다 하겠습니다.

  7. 이렇게 만들어진 행 원본이 실제로 어떻게 보일지 살펴보겠습니다. 쿼리 디자인 도구모음에서 ‘데이터시트 보기’ 버튼을 클릭하여 실제 데이터가 어떻게 보일지 살펴봅니다.
    여기에서는 콤보상자를 통해서 보고자 하는 열의 개수와 각 열의 너비를 파악해야 합니다. 열의 개수는 4개이며, 열의 너비는 왼쪽부터 순서대로 2cm, 4cm, 2cm, 3cm 정도면 됩니다. 이전 데일리 팁에서도 언급하였지만, 여기서의 ‘너비’의 단위는 상대적인 크기입니다. 콤보상자 디자인을 많이 해 보면 이 상대적인 크기에 대해 감을 잡을 수 있습니다.
    이 상태에서 반드시 열의 개수와 각 열의 너비를 파악해야 한다는 점, 반드시 기억하기 바랍니다.

  8. 이제 쿼리 디자인 창을 닫습니다. (주의: 저장 버튼을 클릭하지 않습니다. 그냥 창을 닫으십시오.) 쿼리 디자인 창을 닫으면 다음 그림과 같은 대화상자가 나오는데, 여기서 ‘예’를 클릭하기 바랍니다. ‘예’를 클릭하는 의미는, 지금까지 지정한 쿼리문을 콤보상자의 행 원본으로 사용한다는 뜻입니다.

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

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

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

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

    가로 스크롤 바를 이용해 조금 오른편으로 이동해 보면 다음 그림과 같이 표시됩니다.

    이처럼 4개의 열이 모두 표시가 되기는 하지만 한 화면에 모두 표시가 되지 않고 있는 것이 문제입니다.

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

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

  15. 각 열의 너비는 설정하였지만, 콤보상자의 전체 가로 너비는 설정하지 않았기 때문에 이러한 문제가 발생하는 것입니다. ‘목록 너비’ 속성에 다음 그림과 같이 설정합니다.
    이전 데일리 팁에서 설명한 대로 ‘목록 너비’ 속성은 콤보상자에 표시될 각 열 너비의 전체 합에 0.5cm 를 더한 정도가 좋습니다. 열 너비가 ‘2cm, 4cm, 2cm, 3cm’ 이기 때문에,
    2+4+2+3+0.5 = 11.5
    가 되어 11.5cm 를 기록하였습니다.

  16. 이제 폼 보기를 클릭하면 우리가 원하는 대로 관련 데이터가 같이 조회되는 것을 볼 수 있습니다.



지금까지 다소 장황하게 콤보상자 만드는 법에 대해 알아보았습니다. 여러분들은 이 예제를 통해 단순히 콤보상자 만드는 방법을 ‘따라하기’ 방식으로 익히기 보다는, 각 단계별로 속성을 설정하고 그 때 콤보상자가 어떻게 변화되는지 직접 파악해 봄으로써, 콤보상자의 각 속성에 보다 익숙해지는 기회로 삼기 바랍니다.
실제로 필자가 콤보상자를 만들 때에도 이러한 순서로 만들고 있으며, 지금도 각 단계별로 콤보상자에 표시되는 방법을 확인하고 있습니다.
지금까지 알아본 내용을 바탕으로 여러분 업무에 많은 도움이 있었으면 좋겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-06-21, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

콤보상자와 목록상자는 한 화면에서 관련 데이터를 보여주는 아주 좋은 방법입니다. 다음 그림은 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 로 하는 것이 적당합니다.


이러한 순서로 속성값을 설정하면 여러분들이 보고자 하는 콤보상자가 화면에 보이게 될 것입니다. 다음 데일리 팁에서는 이러한 콤보상자를 만드는 방법을 따라하기를 통해 알아보도록 하겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-04-11, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

3. 어떻게?
그럼, 어떻게 해야 액세스 대가의 길로 갈 수 있는지 알아보도록 하겠습니다. 우선 ‘초보 단계’에서는 데이터베이스 디자인 같은 요소는 크게 신경 쓰지 않아도 좋습니다. 단지 테이블, 쿼리, 폼, 보고서 등의 액세스 기본 개체의 이용법 및 제작법을 익히는 데 노력을 기울이기 바랍니다. 앞에서도 말했지만, ‘초보 단계’는 상대적으로 쉽게 도달 할 수 있습니다.

‘중급 단계’는 아주 쉽지만은 않습니다. ‘중급 단계’에서 가장 중요한 요소는 데이터베이스 디자인 기법을 익히는 것입니다. 데이터베이스 디자인 기법을 익히기 위해서는 우선 데이터베이스 디자인 기법에 대한 이론적 배경이 있어야 할 것입니다. 이러한 이론적 배경 하에 자신이 작성할 응용프로그램을 실제로 만들어 보는 것이 중요합니다. 많은 분들이 ‘공부’만 하고 실제로 만들어 보지 않아서 실패하곤 합니다. 다음과 같은 요소에 주의하기 바랍니다.
  • 처음 공부할 때는 최소한 버전 3 정도까지는 업그레이드해 보아야 감을 제대로 익힐 수 있습니다. 여기에서 말하는 ‘버전’은 데이터베이스 디자인이 전면적으로 변경되는 것을 말합니다. 즉, 자신의 응용프로그램 데이터베이스 구조를 최소한 3번은 전면적으로 수정해 보아야 함을 의미합니다.

  • 남이 작성한 업무 프로그램의 데이터베이스 구조를 눈여겨 보아야 합니다. 물론, 데이터베이스 구조만 보아서는 아무런 소용이 없지요. 남이 작성한 업무 프로그램의 업무를 파악하고, 해당 업무를 어떻게 구현해 놓았는지 파악해 보아야 합니다. Microsoft Office 를 설치하면 기본으로 들어있는 Northwind.mdb 파일은 아주 좋은 예제 프로그램입니다.

‘중급 단계’에 도달하면, 적어도 어떤 업무를 보더라도 테이블 구성은 원활히 할 수 있게 됩니다. 테이블 구성을 원활히 할 수 있게 된다는 의미는, 단순히 테이블 구성만 원활히 할 수 있게 된다는 의미는 아니며, 테이블에서 ‘데이터를 추출’하는 작업까지 고려한 테이블 구성을 원활히 할 수 있게 된다는 뜻입니다.
‘중급 단계’에서 참고할 만한 서적은 다음과 같습니다.
  • 액세스 데이터베이스 디자인 가이드, 영진닷컴, 유일회

  • 데이터베이스 30일 완성, 영진닷컴, 염기웅


‘고급 단계’에 이르면, 보다 쉽고 사용하기 편한 응용프로그램을 만드는 데 관심이 있게 됩니다. 이 때에는 VBA를 적극 활용하게 되며, 업무 자동화에 많은 노력을 쏟게 됩니다.
‘고급 단계’에 도달하기 위해서는 무엇보다도 남이 만든 응용프로그램이나 예제 파일을 살펴보는 것이 가장 좋은 공부 방법입니다. 국내에는 ‘고급 단계’ 수준을 해설해 놓은 책은 찾아보기 어렵습니다. ‘고급 단계’에서는 VBA와 폼 프로그래밍에 많은 신경을 쓰는 것이 좋습니다.
‘고급 단계’에서 참고할 만한 서적 및 사이트는 다음과 같습니다. ‘고급 단계’에서는 다음에 소개한 사이트의 ‘질의 및 응답’을 살펴보는 것도 아주 좋은 공부가 됩니다.
  • Inside Secrets Access 97, 삼각형 프레스

  • http://k3dragon.dbabc.com: 바로 업무에 적용할 만한 예제 파일이 많이 있습니다.

  • http://www.dbabc.com: 완성도 있는 예제 파일이 있습니다.

  • http://www.uno21.com

  • http://www.mvps.org/access


‘고수 단계’는 그야말로 액세스를 이용해서 프로그램을 만들어 파는 것을 직업으로 해도 괜찮은 수준입니다. 이 단계는 ‘프로그래머’로 불리워도 지나침이 없습니다. ‘고수’는 많이 아는 것도 중요하지만, 정보가 어디에 많이 있는지.. 정보를 빨리 찾는 방법을 알고 있는지와 같은 요소가 가장 중요합니다. 특히 ‘고수’들은 액세스에 포함된 온라인 도움말을 아주 잘 활용하는 사람이기도 합니다.


지금까지, 액세스 대가가 되기 위한 방법을 간단히 알아보았습니다. 사람에 따라 이 방법이 최상의 방법은 아닐수도 있을지 모르지만, 적어도 여기 설명된 절차를 따라하면 잘못된 길로 빠지는 오류는 범하지 않을 것이라고 생각합니다. 무엇보다도 액세스 대가가 되기 위해서는, 많이 보고, 많이 따라하고, 많이 실패해 보아야 합니다. 강의나 책을 읽기만 해서는 절대로 실력 향상이 이루어 지지 않습니다.

부디, 액세스의 강점을 최대한 잘 살려, 여러분의 업무 처리에 많은 도움이 있기를 바랍니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-04-11, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

지난번에는 액세스의 활용 가능성에 대해서 알아 보았습니다. 좋은 말이 많이 있었죠? 자신의 업무에 대응한다면 정말 좋을 텐데.. 하는 생각도 많이 들었을 것이라고 생각합니다.

오늘은 이처럼 원활한 업무 처리를 위해서 어떻게 해야 하는지에 관해서 알아보도록 하겠습니다.

1. 액세스 수준 알아보기

액세스 수준


앞의 그림은 필자가 생각하는 액세스 수준을 단계별로 나누어 놓은 것입니다. 보통 ‘초보 단계’를 시작으로 하여 ‘고수 단계’까지 이르게 됩니다. 그간의 강의 경험으로 미루어 보아 대부분의 사람들이 ‘초급 단계’는 쉽게 정복하지만, ‘중급 단계’를 정복하는 데에서 많은 어려움을 겪습니다.
또한, ‘중급 단계’를 정복한 사람은 상대적으로 쉽게 ‘고급 단계’와 ‘고수 단계’까지 도달하게 됩니다. 그만큼 액세스는 ‘처음’을 극복하기가 어려워 엑셀 등 다른 오피스 패키지와 비교하여 어려운 도구로 인식되고 있습니다.

1) 초보 단계
초보 단계는 액세스의 기본 사용법을 익혔을 때를 말합니다. 테이블, 쿼리, 폼, 보고서 만드는 방법을 알고 있는 수준이며, 이 때는 보통 액세스를 엑셀의 발전된 도구 정도로 인식하게 됩니다. 초보 단계를 정복하는 것은 그리 어렵지 않으며 하루 한 시간 정도 투자하면 3~4주 정도면 누구나 도달할 수 있습니다.

2) 중급 단계
‘초보 단계’의 문제점은 액세스를 이용해서 데이터베이스를 구축할 수 있기는 하지만, 구축한 데이터베이스에서 원하는 데이터를 자유롭게 추출하기가 힘들다는 데 있습니다. 이것은 액세스라는 ‘도구’ 사용법은 잘 알고 있지만, ‘관계형 데이터베이스’에 대한 이론적 지식이 부족하기 때문입니다. ‘관계형 데이터베이스’에 대한 이론적 지식이 부족하면 구축한 데이터베이스에서 원하는 데이터를 자유 자재로 추출해 내는 데 많은 어려움이 있을 수 있습니다. 그리고 이러한 점이 대다수 사람들이 안고 있는 문제점이기도 합니다.
이것은 데이터베이스 디자인과 밀접한 관련이 있으며, ‘잘못된 데이터베이스 디자인 하에서는 원하는 데이터를 추출하기 힘들다’고 보면 크게 틀림이 없습니다. 즉, 관계형 데이터베이스의 이론을 잘 몰라서 추출하는 것이 어려운 것이 아니라, 추출하기 쉬운 구조의 데이터베이스 디자인 방법을 잘 몰라서 데이터 추출에 문제가 생기는 것입니다.
따라서 ‘중급 단계’에 성공적으로 도달한다면 데이터베이스를 이용한 데이터 처리 작업에 자신감이 붙게 되며 그 효과도 상당할 수 있습니다.
‘중급 단계’는 개인마다 편차가 달라 어느 정도의 시간이 필요하다고 정확히 말하기는 어려우나, 대략 하루에 한 시간 정도 투자하면 8~10주 정도 필요할 것으로 보입니다. 이 단계에서는 절대적인 시간보다는 얼마나 많은 데이터베이스 디자인 연습을 하였는지가 더 중요합니다.

3) 고급 단계
이 단계는 한마디로 표현하여 ‘데이터베이스가 무엇인지 아는’ 단계입니다. 데이터베이스 디자인과 그 추출에 있어 크게 어려움이 없는 단계입니다. 이 단계에서는 데이터베이스 디자인 측면보다는 데이터를 어떻게 하면 효과적으로 보여줄 수 있는지에 대한 문제로 고민하게 됩니다. 효과적인 데이터베이스 응용프로그램을 구축하기 위해서 매크로 및 VBA를 이용한 자동화에 집중하게 됩니다.

4) 고수 단계
이 단계는 일반 사무직원 수준을 넘어, 전문적인 응용프로그램 개발자로 불려도 손색이 없는 수준입니다. 업무 분석이 완료되면 어떤 응용프로그램이라도 개발이 가능합니다.

일반 사무직원이라면 어느 정도의 수준이 요구될까요? 제가 보았을 때는 ‘중급 단계’정도만 되어도 엑셀을 이용하는 것 보다 많은 효과를 볼 수 있다고 보여집니다. ‘고급 단계’는 누구나 다 도달할 필요는 없다고 생각되며, 자신이 액세스에 흥미를 느끼고 재미있다고 생각되면 도전해 볼 만한 가치가 있다고 판단됩니다. 액세스라는 것은 일반 사무직원에 있어서 어디까지나 업무 활용을 위한 도구일 뿐이지 그 자체가 목적은 아니기 때문입니다.

2. 액세스 특성 이해하기
많은 사람들이 액세스라는 도구에 대해서, 데이터베이스라는 것에 대해서 두려움을 가지고 있습니다. 그리고 대부분 그것은 사실일지도 모릅니다.
엑셀은 학원에서 한 달 정도 수강하거나 책을 한 권 정도 구입해서 공부한다면 공부한 만큼 얻는 것이 있으며, 자신의 업무에 바로 이용이 가능한 도구입니다. 그래서 엑셀은 상대적으로 접근이 용이합니다. 하지만 액세스는 앞에서도 말한 것처럼 ‘초보 단계’ 수준이라면 큰 효과를 보기가 힘듭니다. 최소한 ‘중급 단계’는 되어야 어떠한 효과를 볼 수 있기 때문입니다. 그래서 많은 사람들이 액세스에 도전 하였다가 중도에 그만 두게 되는 결과를 초래하는 것을 너무도 많이 보아 왔습니다.
액세스라는 특성을 잘 이해하는 것이 무엇보다도 중요합니다. 액세스에 도전하고 싶은 사람은 반드시 다음의 사항을 잘 이해하고 있어야 합니다.
  • 단기간에 정복할 수 있는 도구는 아니다. 최소 3개월은 투자해야 한다.

  • 하나를 배워 하나를 활용할 수 있는 도구는 아니다. 기본기가 바탕에 깔려 있어야 한다.

  • 처음에는 효과가 0 이지만, 어느 정도 수준에 도달하면 급격하게 효과가 증가한다.

  • ‘중급’ 수준에 도달하게 된다면 동일한 정형적 업무를 처리함에 있어 ‘엑셀’ 이용자보다 150% ~ 500% 이상의 생산성 향상을 가져올 수 있다.


지금까지 액세스 대가가 되기 위한 기본 요소에 대해서 알아보았습니다. 다음에는 ‘어떻게’ 대가가 되는지에 대한 요소를 알아보도록 하겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-03-31, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

액세스를 잘 하면 무엇이 좋을까요? 액세스를 한 번이라도 접해 보신 분이나, 주변에서 액세스 응용프로그램을 만들어 자신의 업무에 활용하는 것을 한 번이라도 본 분이라면 액세스를 잘 하면 상당한 효과를 얻을 수 있다는 것을 알고 있을 것입니다. 구체적으로 무엇이 좋을지 한 번 알아볼까요? (다음의 내용은 필자 개인 생각입니다.)

1. 업무를 정형화할 수 있다.
업무를 정형화한다는 것은 단순 반복적인 업무를 컴퓨터의 힘을 빌어 자동화하여 궁극적으로는 업무의 효율을 높이는 것을 말합니다. 지금도 많은 사무직 직원들은 비정형화된 업무로 인해 많은 낭비를 하고 있습니다.
김 과장이 주간 업무 보고서를 작성하는 시나리오를 생각해 보겠습니다.
  • 1단계: 회사의 정보시스템에서 엑셀로 데이터를 다운로드 받습니다.

  • 2단계: 엑셀에서 데이터 작업(피벗 테이블, 피벗 차트 이용)을 하여 통계 자료를 추출합니다.

  • 3단계: Microsoft Word 혹은 Microsoft PowerPoint를 이용해서 최종 주간 업무 보고서를 작성합니다.


이렇게 작업하는 데는 2시간이 소요되었습니다. 이 작업은 매 주 금요일 진행되는 작업이며, 매 월 10시간이 필요한 작업입니다. 여기에서 ‘정형화’ 할 수 있는 영역은 2단계와 3단계까지입니다. ‘정형화’된 이후의 업무 처리 시나리오는 다음과 같습니다.

  • 1단계: 회사의 정보시스템에서 엑셀로 데이터를 다운로드 받습니다.

  • 2단계: 김 과장이 만든 업무 보고 시스템을 가동하여 다운로드 받은 엑셀 파일을 ‘가져오기’ 합니다.

  • 3단계: 업무 보고 시스템에서 ‘주간 업무 보고 입력’ 메뉴를 클릭합니다. 주간 업무 보고서에는 기본적인 분석 데이터가 자동으로 표시됩니다.

  • 4단계: ‘주간 업무 보고 입력’ 메뉴에서 정량적인 데이터가 아닌, 정성적인 분석 의견만을 기록하여 주간 업무 보고서를 출력합니다.


이렇게 작업하는 데는 30분이 넘지 않았습니다. 김 과장이 할 일은 회사의 정보시스템에서 엑셀로 데이터를 다운로드 받은 후, 분석 결과에 대한 의견을 기록하는 일 정도입니다. 데이터 분석 작업은 미리 ‘사용자 정의한’ 대로 자동으로 액세스가 처리해 줍니다.

이처럼 액세스를 이용하면 단순 반복적인 업무를 간소화할 수 있습니다. 물론, 이를 위해서는 사전 업무 분석이 필수이겠지요.

2. 데이터를 공유할 수 있다.
일반 사무 환경에서 또 하나의 문제점은 데이터가 여기 저기 흩어져 있다는 점입니다. 심지어 자신이 일주일간 고생해서 만든 보고서와 거의 유사한 내용을 바로 옆 사람이 이미 만들어 놓았던 것을 나중에 알고 억울했던 기억도 한번쯤은 있겠지요? 데이터가 쌓이게 되면 가장 중요한 것은 ‘공유’입니다. 엑셀 파일로 저장된 데이터는 ‘공유’가 가능하지만 남이 만들어 놓은 데이터를 자신이 활용하는 것은 어렵습니다.

요즘은 그런 경우가 많이 줄었지만, 불과 3년 전만 하더라도 다음과 같은 시나리오가 늘 있는 일이었습니다.
김미녀 사원은 경리 부서의 사무 담당 직원입니다. 김미녀 사원은 여러 가지 업무를 하지만, 거래처 정보를 정리하여 각 사원들에게 배포하는 것 또한 중요한 업무입니다. 김미녀 사원은 거래처 정보를 엑셀파일에 저장하여 관리하고 있습니다. 거래처 정보가 변경되면 다른 직원들은 김미녀 사원에게 변경된 내용을 알려주고, 김미녀 사원은 엑셀파일을 수정한 후 모든 사원들에게 재배포합니다. 문제는 어떤 사원은 변경된 내용을 김미녀 사원에게 이야기하지 않고, 자신이 가지고 있는 엑셀 파일에 바로 변경하여, 변경된 거래처 정보를 자신만이 알고 있는 경우가 많다는 점이었습니다. 시간이 흘러가면서 김미녀 사원을 포함한 모든 사원이 가지고 있는 데이터 중 어느 하나도 제대로 된 거래처 정보를 가지고 있는 데이터는 없게 됩니다.
편의상 거래처 정보라는 상대적으로 덜 중요한 예를 들었습니다만, 이와 비슷한 예는 이 글을 읽고 계시는 여러분들 머리에 떠오르리라고 생각합니다.

액세스를 이용하면 이러한 문제를 해결할 수 있습니다. 각 사원들은 액세스 응용프로그램 파일을 가지고 있습니다. 하지만 각 사원들이 변경하는 정보는 한 군데의 데이터베이스 서버로 저장됩니다. 누가 언제 정보를 조회하더라도 최신의 정보를 조회할 수 있으며, 별도의 직원이 관련 데이터를 일괄 배포해야 하는 일도 없어집니다.

3. 다양한 정보 분석이 가능하다.
대부분의 회사는 IT 지원 조직을 가지고 있습니다. 그리고 대부분 회사의 IT 지원 조직은 단위 부서의 IT 요구사항 처리까지는 원활히 수행하지 못하고 있습니다. 원칙적으로는 액세스를 이용하지 않더라도 ‘주간 업무 보고서’ 같은 것은 회사의 IT 지원 조직에서 자동으로 만들어지게끔 지원해 주어야 하지만, 현실적으로는 제약이 많습니다.
그래서 단위 부서에서는 엑셀 등을 이용해서 회사의 기간 시스템과 별개의 데이터베이스를 운영하고 있습니다. 왜 이런 현상이 벌어질까요? 회사의 기간 시스템은 모든 데이터를 가지고 있지만, 우리 부서에서 요구하는 시각의 데이터 분석은 보여주지 않기 때문입니다. 그래서 엑셀로 데이터를 다운로드하고, 피벗테이블 및 피벗차트를 이용해서 데이터를 분석하는데 상대적으로 많은 시간과 자원이 필요하게 됩니다.
액세스를 이용하면, 이러한 단위 부서용 데이터베이스를 만드는데 큰 도움이 될 수 있습니다. 단위 부서에서 해야 할 일은, 기간 시스템에서 데이터를 다운로드 받아 액세스로 업로드만 하면 됩니다. 그 다음은 업무 분석과 정형화 단계를 거쳐, 데이터베이스를 공유한 후, 우리 부서에서 보고자 하는 데이터로 가공하기만 하면 됩니다.

지금까지, 액세스의 활용 가능성에 대해서 알아 보았습니다. 지금쯤 ‘이대로만 된다면..’ 하고 꿈과 희망을 갖는 분들도 있을지는 모르겠습니다. 분명히 쉽게 되는 일은 아니지만, 지금과는 비교할 수 없을 만큼 좋은 효과를 창출할 수 있습니다. 오늘은 단순히 활용 가능성에 대해서만 알아 보았습니다. 다음에는 이러한 것을 실제로 가능하게 하려면 어떤 것을 준비해야 하는지에 대해서 알아보겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
버전: 공통

액세스는 ‘보고서’라는 훌륭한 리포팅 툴을 가지고 있습니다. 오늘은 이 ‘보고서’를 사용자 정의하여 보다 읽기 쉬운 보고서를 만드는 방법에 대하여 간략히 알아보겠습니다.



이 보고서는 상당히 깔끔하게 잘 정리되어 있습니다. 카테고리 별로 제품 목록이 나열되어 있어 일목 요연하게 제품 목록을 파악할 수 있습니다. 하지만, 제품 이름, 제품 번호, 공급업체, 단가 등의 필드가 넓게 배치되어 있어, 제품 이름에 따른 단가를 눈으로 정확히 읽어내는 데는 약간의 불편함이 따를 수 있습니다.



보고서가 이 그림과 같이 출력된다면 한결 읽기가 쉬울 수 있습니다. 오늘은 보고서를 출력함에 있어, 홀수 줄은 그냥 출력하고 짝수 줄은 약간의 음영처리를 하여 읽기가 쉬운 보고서를 만드는 방법에 대하여 알아보겠습니다.

우선, 다음의 링크를 클릭하여 예제 파일을 다운로드 받기 바랍니다.

032_Example.zip

예제 파일 다운로드



  1. 예제파일에서 ‘001_rProducts’ 보고서를 디자인 보기로 엽니다.


  2. 보고서의 ‘본문’ 영역을 마우스 오른쪽 버튼을 이용하여 클릭하고, 팝업 메뉴에서 ‘속성’ 항목을 클릭합니다. 그림과 같은 ‘구역: 본문’ 이라는 속성 창이 보여야 합니다. 이 속성 창에서 ‘[이벤트 프로시저]’를 선택하고 ‘…’ 표시되어 있는 ‘만들기 버튼’을 클릭합니다.

  3. 다음 그림과 같이 VBA 편집기가 표시됩니다. 여기에서 다음 그림과 같은 코드를 삽입합니다.

    코드 복사는 다음의 박스를 이용하기 바랍니다.
    [CODE] Const vbLightGrey = 12632256 If Me.CurrentRecord Mod 2 = 0 Then Me.Section(acDetail).BackColor = vbLightGrey Else Me.Section(acDetail).BackColor = vbWhite End If[/CODE]

  4. 보고서를 열면 다음 그림과 같이 짝수 줄은 음영 처리되어 한결 읽기 쉬운 보고서를 만들 수 있습니다.
  5. 크리에이티브 커먼즈 라이선스
    Creative Commons License
Posted by Kiwoong~
2005-03-03, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

지난 데일리 팁에서는 와일드 카드를 이용하여 일부분의 정보만으로 데이터를 추출하는 방법에 대해서 알아보았습니다. 지난 데일리 팁에서 배웠던 와일드 카드는 ‘*’ 가 있는데, 이것 말고도 다른 와일드 카드가 있습니다. 오늘은 이러한 와일드 카드를 이용하여 원하는 대로 일부분의 정보만 가지고 데이터를 추출하는 방법에 대하여 알아보겠습니다.

다음은 와일드 카드에 대해 정리한 표이며, 액세스 도움말에 있는 내용을 발췌한 것입니다.

문자
설명
예제
*글자 수에 관계 없이 찾습니다. 문자열의 처음이나 마지막 문자로 사용됩니다.운동*을 입력하면 운동장, 운동화, 운동선수 등을 찾습니다.
?한 자리의 문자만 찾습니다.소?자를 입력하면 소비자, 소유자, 소개자 등을 찾습니다.
[ ]대괄호 안의 문자 중 어느 하나의 값과 일치하는 것을 찾습니다.소[비유]자를 입력하면 소비자와 소유자를 찾고 소개자는 무시합니다.
!대괄호 안에 있지 않은 문자를 찾습니다.소[!비유]자를 입력하면 소개자는 찾지만 소비자와 소유자는 무시합니다
-영문자의 경우, 문자 범위 내에서 하나의 문자를 찾습니다. 오름차순(Z-A가 아니고 A-Z)으로 지정해야 합니다.b[a-c]d를 입력하면 bad, bbd, 및 bcd를 찾습니다.
#숫자 한 자리를 찾습니다.1#3를 입력하면 103, 113, 123을 찾습니다.


실무에서는 ‘*’를 가장 많이 사용하고, 간혹 ‘?’ 를 사용할 때가 있을 수는 있습니다. 나머지 와일드 카드는 그리 많이 사용되는 것은 아닙니다.

한 가지 주의할 사항은, 대부분의 쿼리를 와일드 카드를 이용하여 작성하는 사람이 있는데, 와일드 카드를 이용하여 쿼리를 구성하는 것은 일반적인 조건 쿼리보다 상당히 느리게 실행된다는 사실을 알아 두어야 합니다.

일반적인 조건 검색 쿼리는 필드값이 일치하는지 아닌지의 여부를 판별하기 때문에 그리 많은 연산을 필요로 하지 않지만, 와일드 카드를 이용한 부분 값 검색을 수행할 때에는 필드 값 자체의 문자열을 하나 하나 체크하기 때문에 상당히 느리게 실행됩니다.

따라서 꼭 필요한 경우가 아니면 와일드 카드를 사용하지 않는 것이 좋습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~
2005-02-03, 염기웅(abc@dbabc.com.korea / kiwoong.dbabc.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

우리가 데이터베이스에서 ‘검색’을 수행할 때는 정확한 값을 알고 찾을 때가 있고, 정확치 않은 값으로 검색할 때가 있습니다. 정확한 값을 알고 검색할 때는 큰 문제가 없으나 일부분의 값만 알고 있을 때는 어떻게 쿼리를 구성해야 하는지 알아보도록 하겠습니다.

우선, 정확한 값을 알고 있을 때의 검색 방법에 대해서 알아보겠습니다. 제품 테이블에서 제품 카테고리가 ‘유제품’인 것을 검색하기 위해서는 다음 그림과 같이 쿼리를 구성하면 됩니다.




이 쿼리의 결과는 다음 그림과 같습니다. 제품 테이블에서 제품 분류가 ‘유제품’인 것만 구하는 쿼리이지요.




이번에는 제품명으로 검색을 하는데, 어떤 것인지 잘 모르지만 ‘아이스크림’ 이라는 단어가 들어간다는 사실은 알고 있을 때로 가정해 보겠습니다. 이 때 다음과 같이 쿼리를 구성할 가능성이 있습니다.




쿼리의 결과는 빈 레코드를 반환합니다. 이것은 왜 그럴까요? 이 쿼리는 ‘아이스크림’이 들어간 레코드를 찾는 것이 아니고, ‘제품 이름’ 필드에 정확히 ‘아이스크림’이라는 값이 들어간 레코드를 찾는 의미를 가지고 있기 때문에 이런 결과를 보여주는 것입니다.




자, 이제 제품 이름이 무엇인지는 잘 모르지만, ‘아이스크림’이 들어간 것은 확실하다고 가정해 본다면, 다음과 같이 쿼리를 구성해 보기 바랍니다.




여기서 주의해야 할 것은 ‘아이스크림’ 앞뒤로 ‘*’표가 들어갔다는 점입니다. 이 쿼리의 결과는 다음과 같습니다. ‘제품 이름’ 필드에 ‘아이스크림’ 이라는 것이 들어간 레코드는 모두 표시되었습니다.




사실, 많은 부분에서 사용자들이 접하는 검색은 이러한 방식이 많습니다. 정확히 어떤 값을 알고 검색하기 보다는, 일부분을 가지고 검색해야 하는 경우가 보다 많을 겁니다. 이러한 검색을 어떻게 수행하는지 알아보도록 하겠습니다.

앞서 식을 살펴보면,

Like “*아이스크림*”


이라고 되어 있는데 이 식에서 ‘Like’는 ‘일부분이라도 일치하면 검색하겠다’는 의미를 가지고 있습니다. 그리고 ‘*’ 는 와일드 카드라고 해서 모든 문자열을 대체하는 예약어입니다. 그래서 이 문장의 정확한 의미는 ‘아이스크림’ 앞이나 뒤에 어떤 단어나 구가 포함되어도 무방하다는 의미입니다. 결과적으로 해당하는 필드 안에서 ‘아이스크림’이라는 단어가 포함되는 레코드를 모두 출력하게 됩니다.

만약 이 식을 ‘아이스크림*’ 으로 한다면 이 식의 의미는 ‘아이스크림’으로 시작되는 모든 레코드를 의미하며, ‘*아이스크림’ 으로 한다면 ‘아이스크림’으로 끝나는 모든 레코드를 의미합니다.

그 이외에도 ‘?’, ‘[]’ 등의 와일드카드가 있습니다. 이것은 다음에 다시 알아보도록 하겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~