PROGRAMMING WORKSHOP

Access와 Excel의 연동_2|엑셀 UserForm으로 엑셀테이블처리하기

Access의 테이블을 만드는 것은 잠시 미루고
엑셀로 좀더 시뮤레이션을 더 해보자
그래야, Access, DB의 테이블이 왜 편리한지 알수 있는 강도가 더 강렬할수 있으니까..

실은 정보의 관리는 정보를 담고 있는 테이블은 블랙박스와 같다
사용자의 눈에는 보이지 않고 뒤에 숨어서
사용자가 사용하는 Interface, 즉 폼이라던가 보고서라고 하던가 블랙박스의 내용을
보고 싶은데로 다른 도구에 표현하여 사용하는 것이 순서다
하지만 엑셀은 정보를 입력도 하고 보기도 하고, 편집도 하고 아주 편리하다
그래서 이것이 사용하고자 하는 내용에서는 엄청난 단점이 되는 것이다
그래서 엑셀에서도 실은 UserForm이라는 Window폼을 흉내낸 인터페이스가 제공되지만
워낙 엑셀시트에 친숙한 사용자들은 엑셀시트, 즉 정보창고에 직접접근하는 것을 편해한다
그러다 보니 순수정보와 보고서 정보등과의 경계가 없어져버려서
단순한 정보만 모여져야할 시트에 온통 서식등을 해대서..
화일의 효율이 퍽퍽 떨어져 버리게 된다
대개 사용하시는 화일들을 보면, 이 정도업무를 관리하는 일이라면..
DB없이도 UserForm을 사용하고 테이블을 몇개 나누면 아주 가볍게 엑셀자체DB가 되고
다양한 분석과 보고서를 꾸밀수 있을텐데 하는 경우가 많다
그래서 우선 앞에서 만든 쌤플정보를 사용하여 엑셀로 관리시스템을 하나 만들어 보고..
아하..엑셀에서는 이런데, 이럴때 DB가 필요하게 되겠구나??!!
라는 감각을 얻은후 DB로 가도록 하자



그래야 , 엑셀로 해도 되는데 쓸데 없이 DB를 사용하는 오버디자인도 피하고
또, DB를 사용하는 것이 좋을텐데...라는 아쉬운 상태에서 엑셀로 모든 것을 하려고 하는 것의
경계선을 좀더 명확하게 잡을수 있을 것이다

그림에서 보면 각관련테이블의 ID열은 UserForm에 나타나지 않았다
실은 이런 ID 즉 각정보를 참조하기 위한 키값은 사용자에게는 별의미없는 숫자인것이다
이 키값들은 눈에 보이지 않는 뒤에서 정보와 정보의 연결역할을 하는 핵심이다
엑셀화일에서 테이블을 만들고 사용하는 것에만 익숙한 사람은 이 키값의 중요성을 모른다
하지만 DB에서는 키값이라는 개념이 없으면 다른 정보와의 참조는 날샌일이다
그러니 엑셀에서 작은 테이블을 사용하더라고 Key값 즉 ID열을 만들어서 사용하는 것을
습관을 드리시면 좋을 것이다

원본의 ID열을 목록상자에서 보이지 않게 하지만,프로그래밍을 하는 입장에서는
이 키값은 쉽게 알수 있는 것이 좋을 것이다
그래서 아래와 같이 키값열(ID열을) 목록상자에 불러들이기는 하지만
열의 폭을 0로 하여 눈에 보이지 않는 것이 좋다


'애완동물ID  고객ID  진료타입ID  workID  일자    시간    동물명  생일    건강상태    타입    고객명  주소1   주소2   전화번호    진료명  금액'
For Each rX In rTable.Rows(1).Offset(-1).Cells
    If InStr(rX.Value, "ID") > 0 Then
        sWidth = "0"
    ElseIf rX.Value = "건강상태" Or rX.Value = "타입" Then
        sWidth = "30"
    Else
        sWidth = "60"
    End If
    sColWidth = sColWidth & sWidth & ";"
Next
sColWidth = Left(sColWidth, Len(sColWidth) - 1)
Me.lstMain.ColumnWidths = sColWidth


   

실은 uno21.com은 엑셀을 활용한 DB의 생활화가 목표였었다
그러나
엑셀의 일반적인 기능과 VBA로 단순한 업무의 자동화를 목말라하시는 분들이
대부분이라서 당초의 주제를 잊어 먹고 있는 셈이다
이 페이지에서 DB에 관심있는 분들만이라도 DB의 생활화라는 개념으로 잘 접근하시기를 바라는 것
DB를 생활화, 단순한 업무에서도 DB개념으로 데이타를 관리하면
얼마나 일이 단순화되고, 입체적으로 구성되는지 아셔야 할 것이다
크라우딩시스템이다, 뭐나 거창하지만
실은 간단한 DB개념속에 들어 있는 것들이다
엑셀에서 DB라는 관계형테이블을 이해하시고 활용하려고 하시면
좀더 정보관리를 하는 즐거움이 있을 것이다

위의 단순한 DB개념결여된 테이블을 UserForm의 목록상자에 올렸었다
이것을 다시 DB개념을 잘 갖춘 폼으로 구성해보면 아래와 같이 된다



몇개의 테이블을 만들고
테이블간의 관계를 추적하면서
입체적인 데이타의 관리가 되는 것이다

이렇게 구성하고 잘 돌아가면..
그냥 엑셀로 사용해도 데이타에 큰 부담이 없으면 그냥 엑셀로 사용하는 것이고
데이타량이 많아져서 데이타창고를 별도로 구성하고 싶다는 생각이 들때
억세스의 테이블로 구성하면 되는 것이 좋은 순서의 방법인 것이다

그러니 엑셀화일로 DB관리형태의 테이블로 내공을 쌓은후
억세스와 연동을 시작하도록 하자..

위의 내용을 좀더 구체적으로 보면 아래의 그림과 같다



기본테이블인
고객정보
애완동물정보
진료타입정보의 각각의 테이블은 한번 입력하면
그대로 유지된다
하지만, 진료진행은 계속 역동적으로 입력이 되고,수정이 되고 삭제도 되고
하게 된다
물론 새로운 고객이 새로운 애완동물을 데리고 왔을때만
고객정보나 애완동물테이블에 새로입력이 될 것이다
그리고 진료타입은 동물병원의 진료타입에 대한 추가가 되거나 수정이 될때만
또 진료타입의 정보테이블이 편집 될 것이다
매일,매일 진료행위는
이미 입력된 애완동물과, 진료타입을 어떤 시간에 어떤 날자에 진행이 되었는지
각각의 기본테이블의 ID만 연결하면 되는 것이다
해당 ID에 의하여 관련된 정보는 고구만줄기 나오듯이 쫓아다니는 것이니
신경쓸 필요없게 된다
아래의 화일은 두개의 버튼이 있다
하나는 맨위의 싱거운 테이블을 하나 보는 것이고
두번째는 입체감 있는 연결작업을 수행하고 각각의 기능에 맞는 콘트롤로
연결을 한 내용이다

편집과 좀더 지능을 심는 엑셀 VBA작업을 다음 페이지에서 하도록 하자

***[LOG-IN]***