상세 컨텐츠

본문 제목

[컴활 1급 Access 벼락치기] 한 번에 정리하는 이벤트 프로시저/매크로

자격증/벼락치기 Series

by IT개미 데이터 2020. 12. 17. 17:17

본문

728x90

이벤트 프로시저

데이터베이스의 특정 개체에 설정된 이벤트가 발생할 때 자동으로 수행되는 프로시저

 

데이터 주요 이벤트

이벤트 이벤트 속성 발생시기
BeforeUpdate Before Update 컨트롤이나 레코드의 데이터가 업데이트되기 전에 발생
AfterUpdate After Update 컨트롤이나 레코드의 데이터가 업데이트된 후 발생
BeforeInsert Before Insert 새 레코드에 첫 문자열을 입력할 때 발생[레코드가 만들어지기 전]
AfterInsert After Insert 새 레코드가 추가된 후에 발생
Current On Current 포커스가 임의의 레코드로 이동되어 그 레코드가 현재 레코드가 되거나 폼이 새로 고쳐지거나 다시 질의될 때 발생
Charge On Charge 텍스트 상자의 내용이나 콤보 상자의 텍스트 부분이 바뀔 때, 탭 컨트롤에서 다른 페이지로 이동할 때 발생
Delete On Delete 레코드를 삭제할 때, 삭제를 확인해서 실제로 삭제되기 전에 발생

마우스 주요 이벤트

이벤트 이벤트 속성 발생 시기
Click On Click 컨트롤을 마우스 왼쪽 단추로 클릭하거나 폼에서 컨트롤의 바깥쪽을 클릭할 경우 발생
DbClick On Dbl Click 컨트롤을 마우스 왼쪽 단추로 두 번 클릭할 때 발생
Mouse Down On Mouse Down 포인터가 폼이나 컨트롤에 있는 동안 마우스 단추를 누를 때 발생

창의 주요 이벤트

이벤트 이벤트 속성 발생시기
Open On Open 폼을 열어 레코드를 처음으로 표시하기 전이나 보고서를 열어 인쇄하기 전에 발생
Close On Close 폼이나 보고서를 닫아 화면에서 사라질 때 발생
Load On Load 폼을 열어 레코드들이 표시될 때 발생
Current이벤트 전에 발생하고 Open이벤트 후에 발생
Resize On Resize 폼의 크기가 바뀔 때와 폼이 처음으로 표시될 때 발생
Unload On Unload 폼이 닫히고 레코드가 언로드될 때 이 폼이 화면에 사라지기 전에 발생
Close이벤트 전에 발생

포커스 이벤트

이벤트 이벤트 속성 발생시기
Activate On Activate 폼이나 보고서가 활성화될 때 발생
Deactivate On Deactivate Access의 활성 창이 다른 창으로 바뀔 때, 다른 창이 활성 창이 되기 전에 발생
Enter On Enter 폼의 다른 컨트롤에서 특정 컨트롤로 포커스가 실제로 옮겨질 때 발생
Exit On Exit 같은 폼에서 한 컨트롤이 다른 컨트롤로 포커스를 읽기 전에 발생
GotFocus On Got Focus 즉, 컨트롤이나 폼에 포커스가 옮겨갈때 이벤트 발생
    폼은 사용 가능한 컨트롤이 없는 폼
LostFocus On Lost Focus 폼이나 컨트롤이 포커스를 잃을 때 발생

 

주요 프로시저 속성

속성명 설명
RecordSource 레코드원본 설정
MSGBOX"출력될 메시지"
MSGBOX("출력될 메시지", 버튼옵션,"메시지창 명")
출력될 메시지 입력
    * 버튼 옵션 : vbYesNo,
변수를 사용할 경우, 어떤 버튼을 눌렀는지 저장됨
gotorecord(개체타입, "개체명", 이동할 위치) 레코드 위치 이동
    * 개체 타입 : acDataForm
    * 이동할 위치 : acNewRec, acLast, acFirst
   

ME 개체[Access 개체]

현재 폼에서 자신의 폼을 제어할 때 사용

Filter * 조건을 사용해 데이터를 filter할 때 사용
    RecordSource와 유사
* 데이터 형식이 텍스트 형식일 때는 작은 따옴표 사용
    숫자일 때는 그냥 쓰면 됨!!
* 숫자일 때              "필드명 = " & 컨트롤명
  문자열일 때           "필드명 = '" & 컨트롤명 &"'"
  날짜형일 때           "필드명 =#" & 컨트롤명 &"#"
  문자열 일부와 일치  "필드명 like '*" & 컨트롤명 & "*'"
    ex1> Me.Filter = "지역코드 = '"& cmb지역조회 & "'"
            Me.FilterOn = True
    ex2> 'txt조회'컨트롤에 입력된 부서코드에 해당하는 자료들만 표시
            Me.Filter = "부서코드 = '"& txt조회 & "'"
            Me.FilterOn = True  
RecordSource * 시트에서 불러온 데이터를 콤보상자나 목록상자의 목록값에 배정할 때 사용
    Column은 열의 번호를 이용해 해당 열의 데이터를 가져올 때 사용
* Me.RecordSource = "select 필드명 from 테이블명 where 조건"
  Me.RecordSource = "테이블명"
    ex1> Me.RecordSource = "select * from 요금명 where 요금코드 = '" & cmb조회 & "'"
Recordsetclone.FindFirst * 폼의 레코드를 복사해 조건에 맞는 첫번째 자료를 찾음
    ex1> Me.Recordsetclone.FindFirst "조건"
    ex2> Me.Recordsetclone.FindFirst "학번 = '" & txt조회 & "'"
bookmark * 북마크를 설정
    ex1> Me.Bookmark = Me.RecordsetClone.Bookmark
              → 현재 폼의 북마크에 찾아놓은 복사레코드의 북마크 대입
Orderby * 해당 필드를 오름차순 혹은 내림차순으로 정렬할 때 사용
    ex1> Me.Orderby = "해당 필드명 desc/asc"
           Me.OrderbyOn = True

 

DoCmd 개체[Access 개체]

Microsoft Access 매크로 함수를 Visual Basic에서 실행하기 위한 개체

OpenReport 작성된 보고서를 호출하는 매크로 함수를 수행
    ex1> DoCmd.OpenReport "보고서명", 여는방법, 필터이름(생략 시 공백),"조건"
OpenForm 작성된 폼을 호출하는 매크로 함수를 수행
    ex1> DoCmd.OpenForm "폼 명", 여는방법, 필터이름(생략 시 공백),"조건"
    ex2> DoCmd.OpenForm "폼 명"

OpenQuery 작성된 쿼리를 호출하는 매크로 함수를 수행
    ex1> DoCmd.OpenQuery "쿼리 명"
    ex2> DoCmd.OpenQuery "명단추가"
    
RunSQL SQL문을 실행하는 매크로 함수를 수행
    * 검색 : SELECT 필드명 FROM 테이블명 WHERE 조건
    * 갱신 : UPDATE 테이블명 SET 변경내용 WHRE 조건
    * 삭제 : DELETE 필드명 FROM 테이블명 WHERE 조건
    * 추가 : INSERT INTO 테이블(필드1, 필드2) VALUES(값1, 값2)

    ex1> DoCmd.RunSQL "DELETE * FROM "명단1"
RunCommand 액세스 내부에서 제공하는 명령을 실행시키는 매크로 함수를 수행
RunMacro 매크로를 실행하는 매크로 함수를 수행
OutputTo 데이터베이스 개체를 엑셀, 텍스트 등으로 내보내는 매크로 함수를 수행
Close 활성화되어 있는 데이터베이스 개체를 닫는 매크로 함수를 수행
Quit 액세스를 종료하는 매크로 함수를 수행
Requery 개체의 데이터를 수정한 후 그 결과를 반영
ApplyFilter 조건을 사용해 데이터를 filter할 때 사용
    ex1> Docmd.ApplyFilter 필터이름, "조건"
    ex2> Docmd.ApplyFilter ,"학번 ='" & txt조회 & "'"

폼의 컨트롤 경로

  • 현재 폼 : [컨트롤명]
  • 외부 폼 : [FORMS]![외부폼 명]![컨트롤명]
  • 하위 폼 : [하위폼 명].FORM![컨트롤명]

프로시저 설정

방법1. 이벤트 프로시저 활용

  • 해당 폼/레이블의 속성 시트에서 이벤트 탭 클릭
  • 문제에서 주어진 이벤트에서 [...]아이콘 클릭
  • 매크로 작성기/식 작성기/코드 작성기 중 코드 작성기 선택

방법2. 프로시저 켜서 직접 작성

  • 프로시저 단축키[Alt + F11]
  • 해당 폼 클릭해서 프로시저 작성

 

 폼 가동시 테이블이 레코드원본으로 설정되도록 프로시저 설정

  • 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 Load의 [...]아이콘 선택
  • 코드 작성기 선택
  • Private Sub Form_Load()
    Me.RecordSource = "select 필드명 from 테이블명 where 조건"
    End Sub
        → 보통 폼/보고서의 레코드소스를 지정할 땐 필드명에 *를 사용
  • Private Sub Form_Load()
    Me.RecordSource = "테이블명"
    End Sub
  • ex1> 폼이 가동되면 '상품정보'테이블이 레코드 원본으로 설정되도록 프로시저를 작성하시오.
    Private Sub Form_Load()
    Me.RecordSource = "select * from 상품정보"
    End Sub

 폼 가동시 컨트롤이 보이지 않도록 프로시저 설정
[해당 컨트롤과 연계된 레이블 상자도 표시되지 않도록 설정]

  • 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 Load의 [...]아이콘 선택
  • 코드 작성기 선택
  • Private Sub Foam_Load()
    컨트롤명.Visible = False
    End Sub

 폼 가동시 새로운 레코드가 나타나도록 프로시저 설정

  • 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 Load의 [...]아이콘 선택
  • 코드 작성기 선택
        지정된 컨트롤에 포커스가 위치하도록 이벤트 프로시저를 작성하시오.
        DoCmd 개체와 GoToRecord, SetFocus 메서드를 이용하시오.
  • Private Sub Foam_Load()
    DoCmd.GoToRecord acDataForm, "폼 명". acNewRec
    지정된 컨트롤명.SetFocus
    End Sub

 폼 가동시 'txt날짜' 컨트롤 값이 비어있다면 오늘날짜가 나오도록 프로시저 설정

  • 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 Load의 [...]아이콘 선택
  • 코드 작성기 선택
        ISNULL, DATE함수 사용
  • Private Sub Foam_Load()
    If ISNULL(txt날짜) Then
        txt날짜 = date()
    End If
    End Sub

 폼 가동시 커서를 이동시키고 탭정지 되지 않는  프로시저 설정

  • 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 Load의 [...]아이콘 선택
  • 코드 작성기 선택
        'txt프로그램명'컨트롤로 커서를 이동시키고 'txt요일'컨트롤은 탭정지되지 않도록 하시오.
        SetFocus,TabStop함수 사용
  • Private Sub Foam_Load()
    txt프로그램명.SetFocus
    txt요일.TapStop = False
    End Sub

 폼 활성화(Activate)될 때, 컨트롤에 포커스가 위치하도록 프로시저 설정

  • 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 On Activate의 [...]아이콘 선택
  • 코드 작성기 선택
        SetFocus 메서드를 이용하시오.
        글꼴 크기를 77로 지정하시오.
  • Private Sub Foam_Activate()
    컨트롤명.SetFocus
    컨트롤명.FontSize = 77
    End Sub

 

 컨트롤 더블클릭 시 메시지 상자가 나타나도록 프로시저 설정

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키[F4]
  • 이벤트 탭에서 On Dbl Click의 [...]아이콘 선택
  • 코드 작성기 선택

    ex1>

  • 비만도 = {(몸무게/키)/2}^2
    비만도가 0.05이상이면 "비만입니다" 그 외는 "비만이 아닙니다"로 나타내시오
  • Private Sub 컨트롤명_DblClick(Cancel As Integer) 

    비만도 = ((몸무게 / 키) / 2) ^ 2 

    If 비만도 >= 0.05 Then 
    MsgBox "비만입니다" 
    Else
    MsgBox "비만이 아닙니다" 
    End If 

    End Sub

 컨트롤 클릭 시 폼을 실행하도록 프로시저 설정
    [단, 예(Y) 단추 클릭시 폼이 종료되도록 설정]

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택
  • 컨트롤에 외부폼의 컨트롤 내용이 표시되도록 하시오
        레이블1는 컨트롤명1과 바운드 시키시오.
        레이블2(ex> 999999-0000000) 뒷자리는 "*******"로 나타내시오
  • Private Sub 컨트롤명_Click()

    DoCmd.OpenForm "폼 명"

    [Forms]![폼 명]![레이블1명] = 컨트롤1명
    [Forms]![폼 명]![레이블2명] = Left(컨트롤2명,7) & "*******"

    End Sub

 컨트롤 클릭 시 DoCmd객체의 메서드를 이용해 쿼리를 실행하는 프로시저 설정
    [현재 폼의 Recalc 메서드를 실행]

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택
  • Private Sub 컨트롤명_Click()

    DoCmd.OpenQuery "쿼리명"
    Me.Recalc

    End Sub

 컨트롤 클릭시 보고서를 '인쇄 미리보기'형태로 여는 프로시저 설정
    ['컨트롤2'에 입력된 필드에 해당하는 자료만 표시하시오.]

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택
  • Private Sub 컨트롤명_Click()

    DoCmd.OpenReport "보고서명", acViewPreview, "필드명 = '" & 컨트롤2명 & "'"

    End Sub
  • 날짜 중 조회날짜(txt날짜)에 입력된 해당 월의 소비 내역만 표시하시오
  • Private Sub 컨트롤명_Click()

    DoCmd.OpenReport "보고서명", acViewPreview, "MONTH(날짜) = " & MONTH(txt날짜)

    End Sub

버튼 컨트롤 클릭시 조회 기능 수행하는 프로시저 설정
    [조회 날짜(txt날짜)에 입력된 날짜에 대한 소비내역만 표시하시오.]

  • 해당 버튼 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택
        Filter, FilterOn 속성 사용
  • Private Sub 버튼 컨트롤명_Click()

    Me.Filter = "날짜 = #" & txt날짜 & "#"
    Me.FilterOn = True


    End Sub

  • '찾기' 버튼 클릭시 필터 기능 적용, '해제'버튼 클릭시 필터 기능 해제되도록 설정하시오. 
        'txt조회' 컨트롤에 입력된 내용과 일부가 일치하는 제품 레코드 정보를 찾아 표시
  • Private Sub '찾기'버튼 컨트롤명_Click()
    Me.Filter = "제품명 like '*" & txt조회 & "*'" 
    Me.FilterOn = True

    End Sub

    Private Sub '해제'버튼 컨트롤명_Click()
    Me.FilterOn = False
    End Sub
  • '조회' 버튼 클릭시 '납품일자'필드의 년과 월을 각각 'txt년도','txt월' 컨트롤과 비교해 둘다 일치하는 자료가 추출되는 프로시저를 작성하시오. 
        Filter,FilterOn 속성 사용
  • Private Sub '조회'버튼 컨트롤명_Click()
    Me.Filter = "YEAR(납품일자) = " & txt년도 & "AND MONTH(납품일자) = " & txt월 
    Me.FilterOn = True

    End Sub
  • 'cmd조회'에 선택된 문자와 동일한 요금코드만 조회하시오.
        요금명 테이블과 RecordSource 속성 이용
  • Private Sub 컨트롤명_Click()
    Me.RecordSource = "select * from 요금명 where 요금코드 = '" & cmb조회 & "'"
    End Sub
  • '봉사내역' 버튼(cmb봉사내역)을 클릭하면 'txt조회'컨트롤에 입력된 학번 정보를 보여주는 프로지저 작성.
        정확한 학번을 입력하는 경우에만 조회 가능[ApplyFilter를 사용하시오.]
  • Private Sub cmb봉사내역_Click()
    Docmd.ApplyFilter ,"학번 ='" & txt조회 & "'"
    End Sub

 컨트롤 클릭 시 예/아니오 메시지 상자가 나타나도록 프로시저 설정
    [단, 예(Y) 단추 클릭시 폼이 종료되도록 설정]

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택

   ex1>

  • "작업을 종료할까요"라는 메시지 창이 나타나도록 하시오.
  • Private Sub 컨트롤명_Click()

    If MsgBox("작업을 종료할까요?", vbYesNo) = vbYes Then
    DoCmd.Close acForm, "폼명", acSavePrompt
    Else
    DoCmd.CancelEvent
    End If

    End Sub

    ☆☆ ex2>

  • "오후 4:44:44 작업을 종료할까요?"를 나타내시오
    예 클릭시 해당 폼 종료되도록 하시오.
    메시지창 명은 없음
  • Private Sub 컨트롤명_Click()

    aa = MsgBox(TIME & "작업을 종료할까요?", vbYesNo,"")
    if aa= vbYes Then
        DoCmd.Close
    End If

    End Sub
  • 앞에 변수를 지정할 경우, 어떤 버튼을 눌렸는지 저장됨
        → ex1에서 acSavePrompt를 해준것과 같은 효과
        → ex1방식보다 더 쉽게 작성 가능

 컨트롤 클릭시 값 메시지 출력 후 현재 폼을 닫는 이벤트 프로시저 설정

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택
        현재 폼의 이름 뒤에 "작업을 종료합니다."문자열을 추가해서 표시하시오
        폼이름은 폼의 속성을 이용하시오.
  • Private Sub 컨트롤명_Click()
    MsgBox Form.Name & "작업을 종료합니다."
    DoCmd.Close
    End Sub

 

 컨트롤 클릭시 값 업데이트 프로시저 설정
    [DOCMD, RUNSQL, REQUERY를 이용하여 해당필드 값에 77%를 더한 값을 업데이트하시오]

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 선택
  • 코드 작성기 선택
  • Private Sub 컨트롤명_Click()
    DoCmd.RunSQL "update 테이블명 set 필드명 = 필드명*1.77"
    Me.Requery
    End Sub
        → Me대신 DoCmd를 써도 무방

   ex2> 

  • '사원'테이블의 주민번호 중 8번째 자리가 1이면 '남', 2이면 '여'를 성별 필드에 업데이트하시오.
    DoCmd,RunSQL, MID함수를 사용하시오
  • Private Sub 컨트롤명_Click()
    DoCmd.RunSQL "update 사원 set 성별 = "남" where mid(주민등록번호,8,1) = "1"
    DoCmd.RunSQL "update 사원 set 성별 = "여" where mid(주민등록번호,8,1) = "2"
    End Sub

 컨트롤에서 목록을 선택하면(Change 이벤트) '제품코드'가 일치하는 제품 정보 표시되는 프로시저 설정

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Resize의 [...]아이콘 선택
  • 코드 작성기 선택
  • 수행될 기능 : <제품별조회>폼의 'cmb코드'에서 목록 선택
                      'cmb코드'컨트롤 첫 번째 필드에 '제품코드'필드가 지정되어 있음
  • Private Sub cmb코드_Change()
    Me.Filter = "제품코드 = '" & cmb코드.Column(0) & "'"
    Me.FilterOn = True
    End Sub
  • 수행될 기능 : 추가적으로 폼 가동시 기본적으로 'd1'이 'cmb코드'에 나타나게 하시오.   
                      [단, 바운드가 되지 않도록 유의하시오.]
  • Private Sub Form_load()
    cmb코드 = "d1"
    End Sub

 

 

폼의 크기가 조절될 때 기능이 수행되도록 프로시저 설정
    [현재 폼의 Recalc 메서드를 실행]

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 On Resize의 [...]아이콘 선택
  • 코드 작성기 선택
  • 수행될 기능 : 해당 필드를 기준으로 내림차순/오름차순 정렬[OrderBy 및 OrderByOn 속성 이용]
  • Private Sub Form_Resize()
    Me.Orderby = "해당 필드명 desc/asc"
    Me.OrderbyOn = True
    End Sub

 

'Cmb학과명' 콤보상자에서 특정값을 선택(BeforeUpdate)하면 'txt교수번호'컨트롤에 교수번호가 표시되도록 프로시저 설정
    [Column속성을 사용한 이벤트 프로시저로 작성하시오]

  • 이 문제는 '교수번호'
  • 해당 콤보상자 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 Before Update의 [...]아이콘 선택
  • 코드 작성기 선택
  • Private Sub 콤보상자명_BeforeUpdate(Cancel As Integer)
     표시될 컨트롤명 = 콤보상자명.Column(컬럼 위치)
    End Sub
        → 단, 컬럼 위치는 0부터 시작
  • Private Sub 콤보상자명_BeforeUpdate(Cancel As Integer)
    txt교수번호 = Cmb학과명.Column(1)
    End Sub
        → Column(0)은 학과명

 컨트롤이 포커스를 얻으면 확인 메시지 상자가 나타나도록 프로시저 설정

  • 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
  • 이벤트 탭에서 GotFocus의 [...]아이콘 선택
  • 코드 작성기 선택
        직무역량(txt직무역량)이 90점 이상이면 다음과 같이 MsgBox를 표시하시오.
        메시지는 "국내연수" 메시지 이름은 "확인"으로 설정하시오.
  • Private Sub 컨트롤명_GotFocus()

    If txt직무역량 >=90 Then
        MsgBox "국내연수", vbOKOnly, "확인"
    End If

    End Sub

 

매크로[MACRO]

응용 프로그램에서 반복적인 작업을 수행할 때, 이를 하나의 명령어로 저장하여 사용자가 같은 작업 수행시 간단하게 처리할 수 있도록 하는 기능

  • 액세스에서 매크로란 테이블, 쿼리, 폼, 보고서 등 액세스의 각 개체들을 효율적으로 자동화하기 위해 사용
  • 매크로 함수는 주로 컨트롤의 이벤트에 연결하여 사용
  • 한 개의 매크로 창에서 이름을 갖는 여러 개의 매크로를 작성하고 관리하는 "그룹 매크로" 기능 제공
        → 그룹으로 지정된 매크로를 실행시 가장 처음에 지정한 매크로부터 차례로 실행됨
        → "그룹 매크로 이름.매크로 이름"처럼 그룹 매크로와 매크로를 마침표(.)로 구분 
        → 하나의 매크로 그룹에 여러 개의 매크로 생성 가능
            (하나의 매크로에 여러 개의 매크로 함수 지정 가능) 
  • 데이터베이스 파일이 열릴 때 자동으로 실행되는 자동매크로 설정 가능
        → 매크로 이름란에 "AutoExec"입력
        → 자동 실행 매크로가 실행되지 않게 하려면 Shift키를 누른 채 데이터베이스 파일을 오픈
  • 매크로를 사용한 보고서 작성 시, 해당 보고서에 없는 컨트롤은 전체경로를 함께 입력해야함!
          현재 폼 : [컨트롤명]
          외부 폼 : [FORMS]![외부폼 명]![컨트롤명]
          하위 폼 : [하위폼 명].FORM![컨트롤명]

※ 컨트롤 단추 클릭 시 해당 폼을 실행하는 매크로 작성

  • 단추 컨트롤 속성시트[더블클릭 or F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 클릭
  • 매크로 작성기 선택
  • 해당 폼을 실행하는 경우이므로 OpenForm함수 추가
        보기 형식이 폼인지 확인할 것

※ 컨트롤 단추 클릭 시 해당 폼을 닫는 매크로 작성

  • 단추 컨트롤 속성시트[더블클릭 or F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 클릭
  • 매크로 작성기 선택
  • 해당 폼을 닫을 경우이므로 CloseWindow함수 추가

※ 해당 폼에 새 레코드 입력할 수 있도록 포커스를 이동시키는 매크로 작성

  • 단추 컨트롤 속성시트[더블클릭 or F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 클릭
  • 매크로 작성기 선택
  • GoToRecord함수 추가
        개체 유형 : 폼
        개체 이름 : 폼명
        레코드     : 새레코드
                       ※ 레코드는 이전, 다음, 첫, 마지막,새 레코드, 이동 중 선택 가능

※ 컨트롤 단추 클릭 시 해당 테이블을 엑셀 통합문서(.xlsx)로 내보내는 매크로 작성[내보낸 후 자동실행]

  • 단추 컨트롤 속성시트[더블클릭 or F4]
  • 이벤트 탭에서 On Click의 [...]아이콘 클릭
  • 매크로 작성기 선택
  • 테이블을 내보내는 경우이므로 ExportWithFormatting함수 추가
        개체 유형 : 테이블
        개체 이름 : 테이블명
        출력 형식 : Excel 통합문서(*.xlsx)
        자동 시작 : 예 

2020/12/17 - [자격증/컴활 1급] - [개미의 걸음 3과목 데이터베이스 일반] 처리② 매크로 작성

 

※ 컨트롤 단추에 매크로 생성하여 지정

  • 단추 컨트롤 속성시트[더블클릭 or F4]
    이벤트 탭에서 On Click의 [...]아이콘 클릭
    매크로 작성기 선택
    → 이 방식은 사용 못함!![해당 레이블에 매크로가 포함되므로]
        문제에서 매크로를 생성해서 지정해라고 했음!!!
  • [만들기 → 매크로 및 코드]에서 매크로 선택
  • OpenReport에서 보고서 이름, 보기 형식, 주어진 조건에 맞는 식을 문제에서 주어진 대로 입력
        보고서 이름 : 출발지별통행내역
        보기 형식    : 인쇄 미리 보기
        where조건문: [입구ID] = Forms![영업소이용관리]![cmb지역조회]
  • where조건문 작성시 아래의 식요소, 식 범주, 식값을 활용하면 쉽게 설정 가능
  • 창 종료하며 매크로명 설정
  • 레이블 속성시트의 이벤트 탭에서 On Click에서 해당 매크로명 선택

※ 컨트롤 단추 클릭하면 보고서를 미리보기 형태로 여는 매크로 구현[매크로 이름을 설정하시오]

  • 단추 컨트롤 속성시트[더블클릭 or F4]
    이벤트 탭에서 On Click의 [...]아이콘 클릭
    매크로 작성기 선택
    → 이 방식은 사용 못함!![해당 레이블에 매크로가 포함되므로]
        문제에서 매크로 이름을 설정해라고 했음!!!
  • [만들기 → 매크로 및 코드]에서 매크로 선택
        <요금보고서>를 '미리보기'의 형태로 여시오
        'Cmb조회'에 입력된 요금코드에 해당하는 정보만을 출력하시오.
        매크로이름은 '요금출력'으로 설정하시오.
  • OpenReport에서 보고서 이름, 보기 형식, 주어진 조건에 맞는 식을 문제에서 주어진 대로 입력
        보고서 이름 : 요금보고서
        보기 형식    : 인쇄 미리 보기
        where조건문: [요금코드] = Forms![요금명]![cmb조회]
  • where조건문 작성시 아래의 식요소, 식 범주, 식값을 활용하면 쉽게 설정 가능
  • 창 종료하며 매크로명 설정
        매크로 이름 : 요금출력
  • 레이블 속성시트의 이벤트 탭에서 On Click에서 해당 매크로명 선택

 

 폼의 크기가 조절될 때 기능이 수행되도록 매크로 작성[매크로 이름은 '초기화'라고 지정]

  • [만들기 → 매크로 및 코드]에서 매크로 선택
  • 수행될 기능 : 모든 레코드를 표시하되 오름차순 정렬하시오.[SortAscending 사용]
                     'txt이름' 컨트롤을 포커스로 이동시키시오.'
  • 매크로 함수 : ShowAllRecords
  • 매크로 함수 : RunMenuCommand
        명 령      : SortAscending
  • 매크로 함수 : GotoControl
    컨트롤 이름 : txt이름 

 

 

 

 

728x90

관련글 더보기

댓글 영역