배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   공통
검색어:   에러,error,쿼리,메시지,message
제목:   에러메시지를 내 맘대로
     
 

STEP

  STEP> 따라하기


[참고] 아래 액세스 Daily Tip은 최천군(Crocii)님이 보내주신 내용입니다.


삭제쿼리를 실행 시키거나 추가쿼리 실행시 데이터가 중복 될 때 아래와 같은 메시지가 나타납니다.

데이터의 보호를 위한 안전장치이지만 때로는 번거로운 메시지 일 수 있습니다. 그리고 프로그램을 개발한 사람의 입장에서는 메시지의 내용이 전혀 맘에 안 듭니다.

이와 같은 메시지를 없애거나 내 맘에 들도록 메시지의 내용을 수정하거나 메시지 박스의 버튼을 바꾸어서 클릭하는 것에 따라 다른 기능을 하게끔 만들면 어떻까요? 오늘은 액세스 쿼리를 사용할 때 나오는 에러메시지를 사용자가 변경할 수 있는 방법에 대해서 알아 보도록 하겠습니다.

<1> 도구 메뉴의 옵션을 선택합니다.

<2> 옵션 대화상자가 나오면 편집 탭을 클릭한 후 확인 항목에서 실행 쿼리라는 체크 항목을 클릭하여 해제합니다.

<3> 설정이 완료 되면 실행 쿼리 실행시 더 이상의 에러메시지가 나타나지 않습니다.

이 내용을 폼에서 적용시키려면 실행 쿼리를 실행시키기 전에 아래의 명령어를 프로시저에 삽입해 줍니다.

  DoCmd.SetWarnings 0 (또는 False)
  폼의 OnLoad 이벤트 등에서 설정해 주어도 좋습니다.

이 명령어는 실행 되면 옵션 대화상자에서 모든 체크항목의 체크를 지운 것과 같은 작용을 하게 됩니다.

이렇게 하고 나서 실행쿼리를 실행시키기 바로 전에 여러분들 맘에 맞게 메시지 박스를 만들면 될 것입니다.

MsgBox "정말로 데이터를 지우시렵니까?", vbOKCancel, "데이터 삭제 확인 // By Crocii"

콤보박스의 속성 중 목록값만 허용로 설정해 두면 목록에 없는 값을 입력할 때 에러메시지를 보여줍니다.

역시 개발자의 맘에 썩 들지는 않는 내용입니다.

그런데 이 메시지는 DoCmd.SetWarnings 0 설정을 하더라도 에러 발생시 번번히 나타납니다.

이런 경우 콤보 상자이벤트 탭에서 On Not In List 이벤트를 사용합니다.

항목의 오른쪽 […]을 클릭하면 아래와 같은 프로시저가 생성 됩니다.

Private Sub 계산방법_NotInList(NewData As String, Response As Integer)
End Sub

프로시저에 다음과 같이 작성하면 에러메시지가 발생하지 않습니다.

Response = False

이벤트 자체가 목록에 없는 값을 입력할 때 발생하는 것이기 때문에 위와 같이 설정하고 역시 여러분 마음대로 메시지 박스를 만들어서 사용하면 될 것입니다.

Dim Rsp As Integer
Rsp = MsgBox("목록에 없는 문자를 입력하셨습니다." & _
" 이 값을 새로 등록하시겠습니까?" _
, vbYesNo, "등록 확인 // By Crocii")
If Rsp = vbYes Then