[참고] 아래 액세스 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
|