반응형

[액세스 VBA] 폼을 나갈 때 레코드 변경 값을 저장할지 묻는 사용자 확인창 출력하기

 

정리. sualchi

출처: http://msdn.microsoft.com/library/bb507728

 

폼을 떠날 때 레코드 수정 사항을 저장할지 물어보는 확인 창을 출력해보자.

그러려면 폼의 Before Update 이벤트를 처리하는 프로시저를 작성해야 한다.

이벤트 프로시저 작성 절차

  1. 작업하려는 폼 화면을 디자인뷰(Design View) 상태로 만든다.

  2. '폼 디자인 도구'의 '디자인(Design)' 탭에서 도구(Tools) 그룹의 속성 시트(Property Sheet)를 눌러서 속성 시트() 창을 연다.

  3. 속성 시트 창의 가장 위에 있는 선택 목록에서 '폼(Form)'을 선택한다. 

  4. 그 아래에서 이벤트(Event) 탭을 누른다. 

  5. Before Update 이벤트 항목 우측에 있는 작은 아래방향 화살표를 누른다.

  6. [이벤트 프로시저](Event Procedure)를 선택하고, 화살표 옆의 생략 단추(...)를 누른다.

  7. Visual Basic이 실행되면, Form_BeforeUpdate 이벤트 프로시저가 만들어져서 나타난다. 

  8. 프로시저를 다음처럼 고치고, 저장 단추를 누른 후에 창을 닫고 폼으로 돌아간다.

[VBA 코드]  

 

Private Sub Form_BeforeUpdate(Cancel As Integer)
   Dim strMsg As String
   Dim iResponse As Integer

   ' 출력할 메시지

   '            "Do you wish to save the changes?"   
   strMsg = "변경된 상태를 저장하겠습니까?" & Chr(10)

    '            "Click Yes to Save or No to Discard changes."
   strMsg = strMsg & "저장하려면 <예>, 변경을 취소하려면 <아니요>를 누르세요. " 

   ' 메시지 상자 출력
   iResponse = MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?")
  
   ' 사용자 선택에 맞게 처리
   If iResponse = vbNo Then
       ' 변경 취소
       DoCmd.RunCommand acCmdUndo

       ' Cancel 상태 갱신
       Cancel = True
   End If
End Sub

이제 폼에서 레코드 항목을 수정한 다음에, 폼을 닫으려고 하면 저장 여부를 묻는 확인창이 뜰 것이다.

 

<이상>

반응형

+ Recent posts