← 개념서모바일 버전
데이터베이스·1급 전용·25장

매크로와 데이터베이스 프로그래밍

Access 매크로와 주요 매크로 함수, 이벤트의 종류, VBA 모듈과 DoCmd 개체, 레코드셋 처리 개념을 정리합니다.

노란 밑줄n회 기출에 나온 지점(숫자는 등장 문항 수)✎ 는 덧붙인 필기

출제 비중 — VBA32회 와 매크로 함수16회, 이벤트 프로시저15회 가 번갈아 나온다. 어느 이벤트에 어떤 동작인지가 관건.

1. Access 매크로

  • 매크로: 자주 하는 작업을 명령(매크로 함수)의 목록으로 저장해 두고 실행하는 개체.
  • 독립 실행 매크로(탐색 창에 개체로 보임)와 포함된 매크로(폼·보고서·컨트롤의 이벤트 속성에 들어 있음)로 나뉜다.
  • AutoExec 이라는 이름으로 저장하면 데이터베이스를 열 때 자동으로 실행된다(Shift 를 누른 채 열면 건너뛴다).
  • 주요 매크로 함수17회
함수 동작
OpenForm / OpenReport 폼·보고서 열기. 보기 형식·조건(Where) 지정
MessageBox 메시지 상자 표시
RunSQL 실행 쿼리 실행
GoToRecord 처음·이전·다음·마지막·새 레코드로 이동
ApplyFilter 필터 적용
SetValue 컨트롤·필드 값 설정
Requery 원본을 다시 읽어 최신 데이터 표시
CloseWindow 창 닫기
QuitAccess Access 종료
RunMacro 다른 매크로 실행. 반복 횟수·조건 지정 가능
  • 매크로에는 조건(If) 과 그룹을 넣을 수 있고, 한 단계씩 실행으로 디버깅한다.

2. 이벤트

  • 이벤트30회: 사용자의 동작이나 상태 변화. 해당 속성에 매크로나 이벤트 프로시저를 연결한다.
구분 이벤트
폼/보고서 Open(열 때) → Load(불러올 때) → Resize → Activate → Current(레코드 이동)
데이터 BeforeUpdate / AfterUpdate(업데이트 전·후), BeforeInsert, Delete, Dirty
키·마우스 KeyDown / KeyPress / Click / DblClick / MouseMove
포커스 Enter → GotFocus … Exit → LostFocus
  • 입력 값을 저장 전에 검사하려면 BeforeUpdate 이벤트를 쓴다.

3. 모듈과 프로시저

  • 모듈: VBA 코드를 담는 개체. 표준 모듈(모든 개체에서 호출 가능)과 클래스 모듈(폼·보고서에 딸린 모듈)로 나뉜다.
  • 편집기: Alt + F11. 프로시저는 Sub(값 반환 없음)과 Function(값 반환).
  • Private 는 해당 모듈에서만, Public 은 모든 모듈에서 호출할 수 있다.
  • 사용자 정의 함수는 쿼리·폼의 컨트롤 원본에서도 사용할 수 있다.

4. DoCmd 개체

  • DoCmd4회: 매크로 함수를 VBA 코드에서 실행하는 개체.
코드 동작
DoCmd.OpenForm "폼이름" 폼 열기
DoCmd.OpenReport "보고서", acViewPreview 미리 보기로 보고서 열기
DoCmd.Close 현재 개체 닫기
DoCmd.GoToRecord , , acNewRec 새 레코드로 이동
DoCmd.RunSQL "UPDATE …" SQL 실행
DoCmd.Requery 원본 다시 읽기
  • 값 참조: Forms![폼이름]![컨트롤이름], 현재 폼은 Me![컨트롤이름].

5. 레코드셋과 데이터 접근

  • DAO / ADO: VBA 에서 데이터를 직접 다루는 개체 모델.
  • 흐름: Set rs = CurrentDb.OpenRecordset("테이블명") → rs.MoveFirst / MoveNext → rs.EOF 로 끝 확인 → rs.Close.
  • AddNew → 값 대입 → Update 로 레코드를 추가하고, Edit → 값 대입 → Update 로 수정한다.
  • rs.RecordCount 는 레코드 수. 정확한 값을 얻으려면 MoveLast 를 먼저 실행한다.

마무리 체크

  • AutoExec 매크로는 DB 를 열 때 자동 실행
  • OpenForm·MessageBox·Requery·GoToRecord 의 동작
  • 폼 이벤트 순서 Open → Load, 포커스는 Enter → GotFocus
  • 저장 전 검사에는 BeforeUpdate
  • 표준 모듈 vs 클래스 모듈, Public vs Private
  • Forms![폼]![컨트롤], 현재 폼은 Me!