드로우홀릭 더베이직

VBA를 이용한 식 계산

2017.09.14 11:47:40 조회 수 5675 추천 수 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
번호 제목 글쓴이 날짜 조회 수sort
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 31832
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 27983
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23113
379 쿼리 file 3 자유자 2023-04-26 4776
378 액세스 질문 드립니다. 1 쿠웨이트azrp 2018-01-18 4748
377 로그인후 담당자가 작성한 데이터만 보고싶어요 1 주라기 2017-03-01 4739
376 기본키.. 일련번호 관련 질문있습니다.. clicheshim 2015-08-12 4706
375 담당자 테이블에서 로그인ID의 사용권한 여부 확인 4 청선 2014-09-11 4665
374 액세스 추가 쿼리 질문 드립니다. file 2 왓썹초이 2016-04-01 4638
373 SQL에 대한 궁금즘 2 겨루기 2021-02-03 4556
372 오류 나오는데 왜 그런건지... file 1 박형근 2023-01-19 4554
371 잘 모르겠어요 벽파2 2013-12-16 4548
370 안녕하세요 일련번호질문입니다. 1 김병욱 2017-06-28 4545
369 검색어를 입력하여 리스트박스에 검색결과 얻기 1 순둥동이 2016-03-31 4503
368 [쿼리]GROUP BY로 계산한 값을 조건에 따라 처리하는법 file 1 satler 2016-10-12 4502
367 엑세스 너무어렵네요 ㅠㅠ 1 엑세스고수되고파 2015-06-19 4470
366 엑셀 내보내기 관련 5 성난파도 2015-04-29 4469
365 실무 액세스 2 "참조"부분 file 3 키스톤 2020-12-22 4450
364 관계 설정 1 kwon 2016-02-02 4450
363 액세스 2010 무작정 따라하기 예제 1 성이 2019-01-04 4417
362 엑셀자료를 액세스로 업로드 하는 방법 file 1 바다거북이 2019-03-24 4412
361 보고서 엑셀로 내보내기 오류 질문 file 5 허수아비 2019-02-10 4408
360 쿼리 조건 식 1 수달 2018-09-14 4405


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