드로우홀릭 더베이직

VBA를 이용한 식 계산

2017.09.14 11:47:40 조회 수 5680 추천 수 0
안녕하세요.
액세스로 인력관리 프로그램을 만들고 있는 직장인입니다.
그동안 엑셀로는 구현하기 힘들었던 부분들이 많았는데, 저자님 도서 덕분에 하나둘씩 풀어 가고 있습니다.
많은 도움을 주셔서 감사합니다.
프로그램을 만들면서 궁금한 점이 있어서 질문합니다.

1. 인력관리 대상은 감리원으로, 다음과 같이 개인마다 경력 사항이 다양합니다.

직무분야 : 건축, 토목, 기계, 전기, 통신, 소방, 조경
공사종류 : 공동주택, 문화 및 집회시설, 교육연구시설, 업무시설, 교정 및 군사시설 등
담당업무 : 설계, 시공, 감리(건축법), 감리(주택법), 건설사업관리(시공단계), 건설사업관리(감독권한대행) 등
참여일 : 참여시작일~참여종료일

2. 건설공사 용역을 수주하기 위해서는 발주처에서 지정하는 기준을 충족하는 감리원을 선정해야 합니다.

예를 들어, A감리원이 B공사에 100일 동안 참여하였지만, 경력 사항이 아래의 조건과 같다면 발주처에서는 A감리원의 경력을 80일로 인정합니다.

직무분야 : 건축(1), 토목(2), 기계(3)
공사종류a : 공동주택(02)
공사종류b : 아파트(0201)
담당업무a : 설계(01)
담당업무b ; 사업책임기술자(0101), 분야별책임기술자(0102), 참여기술자(0103)
경력일 환산비 : 80%

IIf(([직원]![직무분야] In ("1","2","3")) And ([q참여일]![공사종류b]="0201") And ([q참여일]![담당업무b] In("0101","0102","0103")),0.8,0)

<그림1 - 쿼리 디자인 구성>
질문-이미지-01.png

<그림2 - 환산비 식 작성>
질문-이미지-02.png

3. 문제는 각각의 사업마다 위와 같은 조건이 약 20개 정도 있습니다.
쿼리-식 작성기에서 IIf 식을 반복해서 처리할 수 있지만, 조건이 너무 많은 관계로 인지하기가 힘듭니다.
그리고 추후 기준 변경 시 수정 작업이 다소 힘들 것으로 예상합니다.

4. 쿼리-식 작성기가 아닌 VBA 편집기에서 수많고 다양한 조건을 모듈로 작성하여 계산할 수 있을까요?
VBA 편집기에서는 행 구분과 주석을 추가할 수 있어서 검토 및 수정이 용이하여 사용성이 뛰어날 것 같습니다.
어떤 식으로 접근해야 하는지 고견 부탁드립니다.

감사합니다.


profile

윈드님

2017.09.18 10:52:34
*.149.161.117

안녕하세요, 


제가 보기엔 위 같은 작업을 위해 쿼리에서 복잡하게 중첩된 IF 문이나, VBA를 사용해서 적용하는 것은 매우 힘든 작업이 될 것 같습니다.  일단 구현도 힘드실테고, 추후 변경사항이 생기면 변경하는것도 힘드 실 것 같네요. 

경력인정일수를 테이블로 미리 정의 해 놓고 이 테이블과 조인하여 일자만 계산 시키는 것이 좋을 것 같습니다.

Sample.jpg

위 그림처럼 사업별/직무별/공사별/업무별  경력일 환산비 표와 조인하여 계산을 시키면 간단하게 해결 될 것 같습니다.

추후 환산비가 변경되어도 해당 테이블의 환산비만 변경 해 주면 간단하게 해결되는 일입니다.


첨부
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 31887
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 28024
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23121
400 실무액세스 검색폼 모듈을 수정했는데 잘 안되네요. file 4 클로이 2020-08-11 597
399 실무액세스 교재 272쪽 내용(?)을 부탁드립니다. 2 클로이 2020-08-07 402
398 코딩한 내용이 작동이 안됩니다. file 4 학이시습 2020-08-05 235
397 InputBox, MsgBox 함수 원형표시 차이 1 학이시습 2020-08-04 814
396 액세스 문의 입니다 (디자인보기 복사) 1 김상탁 2020-08-03 7255
395 엑세스 초보 질문입니다. 1 토니수사 2020-07-20 517
394 [직장인을 위한 실무 액세스] p.264 조회기능 넣기 '개체가 필요합니다' 오류 1 access어린이 2020-07-15 1173
393 '금액'계산 필드 만들기(322페이지) 질문입니다. file 2 학이시습 2020-07-11 380
392 보고서 인쇄 시 사진 누락 file 1 ming 2020-06-23 287
391 무따2013 신용카드 폼 만들기 [조회수정] 필드에 대한 질문입니다. 1 클로이 2020-06-13 295
390 하나의 폼에 두개의 쿼리에서 갑을 찾아오는 방법 2 백두산 2020-06-11 7440
389 한 필드에서 여러개의 같은 데이터중 한개의 데이터만 가져오는 방법 2 백두산 2020-06-05 42956
388 액세스 업데이트 쿼리 질문!! 2 dhgo 2020-06-04 11188
387 액세스 쿼리에서 질문 1 dhgo 2020-06-03 1103
386 구문해석 5 백두산 2020-05-26 1312
385 직장인을 위한 실무 엑세서 - 조회 폼 질문 1 미르 2020-05-21 2279
384 시간대별로 다른 task 할당받은 직원들의 당일일정표 보여주기 2 클로이 2020-05-10 305
383 매크로가 안됩니다. file 1 학이시습 2020-05-07 288
382 데이터 나누기 11 백두산 2020-05-06 649
381 두 데이타 합치기 질문입니다 1 백두산 2020-04-29 737


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.