사용자 지정 Access 애플리케이션을 원격으로 종료하는 방법

고급: 전문 코딩, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서는 Microsoft Access 데이터베이스(.mdb 또는 .accdb)에만 적용됩니다.

요약

경우에 따라 압축 또는 복구, 백업 복사본 만들기 또는 디자인 수정과 같은 Microsoft Access 데이터베이스에서 유지 관리 작업을 수행해야 할 수 있습니다. 이러한 작업의 대부분은 모든 사용자가 데이터베이스를 종료해야 합니다. 그러나 사용자가 Microsoft Access를 강제로 종료하도록 강제하는 방법은 없습니다. 네트워크 솔루션에서 사용자 연결을 끊는 것은 좋지 않습니다. 이렇게 하면 데이터베이스가 손상될 수 있습니다.

이 문서에서는 프런트 엔드 Access 데이터베이스 애플리케이션을 정상적으로 종료하는 데 사용할 수 있는 한 가지 방법을 보여 줍니다. 이러한 개념의 대부분을 사용하여 데이터베이스를 압축 또는 복구하고, 백업 복사본을 만드는 등의 작업을 수행할 수도 있습니다.

Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.

추가 정보

솔루션 작동 방식

솔루션은 다음과 같이 작동합니다. 서버에 폴더에 파일이 있습니다. 이 파일의 이름은 무엇이든 지정할 수 있습니다. 이 솔루션의 경우 chkfile.ozx라는 파일이 사용됩니다. 이 파일의 이름을 바꾸거나 삭제하면 프런트 엔드 Access 애플리케이션에 닫아야 한다는 알림을 표시합니다.

사용자가 프런트 엔드 데이터베이스 애플리케이션을 시작할 때 열리는 양식이 빌드됩니다. 이 양식은 설정된 간격으로 서버에 파일이 있는지 확인합니다. TimerInterval 속성과 OnTimer 이벤트를 사용하여 이 작업을 수행합니다.

파일이 발견되면 아무 일도 일어나지 않습니다. 파일을 찾을 수 없으면 양식에 다른 양식이 표시되어 지정된 시간 안에 데이터베이스가 자동으로 닫힙니다.

참고

이 솔루션은 MsgBox 함수를 사용하여 사용자에게 경고하지 않습니다. MsgBox 함수는 코드를 실행하기 전에 사용자 입력을 기다립니다. 이렇게 하면 솔루션의 목적이 무효화됩니다.

클라이언트 세션을 정상적으로 닫기 위해 이 솔루션은 검사 중인 파일의 이름을 바꿉니다. 수행해야 하는 모든 작업이 완료되면 이 솔루션은 파일 이름을 원래 이름으로 다시 바꿉니다. 이렇게 하면 사용자가 프런트 엔드 데이터베이스를 다시 시작할 수 있음을 알 수 있습니다.

지정된 시간에 chkfile.ozx의 이름을 바꾸는 서버에서 예약된 서비스를 사용하여 무인 작업을 제공하도록 이 프로세스를 자동화할 수도 있습니다.

샘플 시나리오를 만드는 단계

이 솔루션의 작동 방식을 보여 주려면 다음이 있어야 합니다.

  • C:\MyData 경로가 있는 하드 디스크의 폴더입니다.
  • 빈 파일입니다. 이 솔루션은 이 파일이 있는지 검사.
  • 백 엔드 데이터베이스 파일의 테이블과 프런트 엔드 데이터베이스의 해당 테이블에 대한 링크가 있는 분할 데이터베이스 디자인입니다. 프런트 엔드 데이터베이스에는 설정된 간격으로 파일의 존재를 확인한 다음 사용자에게 경고하는 코드가 포함됩니다.

샘플 애플리케이션에 대한 폴더 만들기

C 드라이브의 루트 디렉터리에 폴더를 만들고 이름을 MyData로 지정합니다.

빈 텍스트 파일 만들기

  1. MyData 폴더에 새 텍스트 파일을 만들고 이름을 chkfile.txt.
  2. 텍스트 파일의 이름을 ozx(chkfile.ozx) 확장명으로 바꿉니다. 메시지가 표시되면 파일 확장자를 변경하려는지 확인합니다.

백 엔드 데이터베이스 만들기

  1. C:\MyData 폴더에 새 데이터베이스를 만들고 이름을 Northwind_Be.mdb.
  2. Northwind 샘플 데이터베이스에서 Northwind_Be.mdb 데이터베이스로 Customers 테이블을 가져옵니다. (기본적으로 Northwind는 C:\Program Files\Microsoft Office\Office10\Samples에 있습니다.)
  3. 데이터베이스를 닫습니다.

프런트 엔드 데이터베이스 만들기

  1. 다른 새 데이터베이스를 만들고 이름을 Northwind_Fe.mdb.
  2. Northwind_Be.mdb 데이터베이스의 Customers 테이블을 새 Northwind_Fe.mdb 연결
  3. 연결된 Customers 테이블을 기반으로 AutoForm을 만들고 frmCustomers로 저장합니다. 이 양식을 닫습니다.

파일의 존재를 확인하는 코드를 사용하여 양식 만들기

  1. 바인딩되지 않은 양식을 만들고 frmAppShutDown 이름으로 저장합니다. 프로덕션 데이터베이스에서 이 양식은 일반적으로 항상 열려 있지만 표시되지는 않습니다. 이 샘플의 경우 평소와 같이 열어 둘 수 있습니다.
  2. 폼의 TimerInterval 속성을 60000밀리초로 설정합니다. 이는 1분과 같습니다. (사용자 고유의 솔루션의 경우 이 시간 간격을 늘리거나 사망할 수 있습니다.)
  3. Microsoft Office Access 2003 또는 이전 버전의 Access에서 frmAppShutDown 양식의 디자인 보기에서 보기 메뉴에서 코드를 클릭합니다. Microsoft Office Access 2007의 frmAppShutDown 양식 디자인 보기에서 디자인 탭을 클릭한 다음 도구 그룹에서 코드 보기를 클릭합니다. 다음 코드를 입력하거나 붙여넣습니다.
Option Explicit
Dim boolCountDown As Boolean
Dim intCountDownMinutes As Integer

Private Sub Form_Open(Cancel As Integer)
    ' Set Count Down variable to false
    ' on the initial opening of the form.
    boolCountDown = False
End Sub

Private Sub Form_Timer()
On Error GoTo Err_Form_Timer
    Dim strFileName As String
    strFileName = Dir("c:\MyData\chkfile.ozx")
    If boolCountDown = False Then
        ' Do nothing unless the check file is missing.
        If strFileName <> "chkfile.ozx" Then
            ' The check file is not found so 
            ' set the count down variable to true and
            ' number of minutes until this session
            ' of Access will be shut down.
            boolCountDown = True
            intCountDownMinutes = 2
        End If
    Else
        ' Count down variable is true so warn
        ' the user that the application will be shut down
        ' in X number of minutes.  The number of minutes
        ' will be 1 less than the initial value of the
        ' intCountDownMinutes variable because the form timer
        ' event is set to fire every 60 seconds
        intCountDownMinutes = intCountDownMinutes - 1
        DoCmd.OpenForm "frmAppShutDownWarn"
        Forms!frmAppShutDownWarn!txtWarning = "This application will be shut down in approximately " & intCountDownMinutes & " minute(s).  Please save all work."
        If intCountDownMinutes < 1 Then
            ' Shut down Access if the countdown is zero,
            ' saving all work by default.
            Application.Quit acQuitSaveAll
        End If
    End If

Exit_Form_Timer:
    Exit Sub

Err_Form_Timer:
    Resume Next
End Sub

  1. 양식을 저장한 다음 닫습니다.

사용자에게 경고하는 데 사용할 양식 만들기

참고

MsgBox 함수를 사용하여 사용자에게 경고하지 마세요. MsgBox 함수는 코드를 실행하기 전에 사용자 입력을 기다립니다. 이렇게 하면 솔루션의 목적이 무효화됩니다.

  1. 언바운드 양식을 만들고 이름을 frmAppShutDownWarn으로 지정합니다. 다음 텍스트 상자 컨트롤을 추가합니다.

    Name: txtWarning
    Type: Textbox
    
  2. 양식을 저장하고 닫습니다.

  3. 시작할 때 frmCustomer 양식과 frmAppShutDown 양식을 여는 매크로를 만듭니다. 매크로 이름을 autoexec로 지정합니다.

  4. 데이터베이스를 닫고 다시 엽니다.

  5. chkfile.ozx의 이름을 chkfile.old로 바꿉니다.

솔루션 이벤트의 타이밍

참고

다음의 모든 시간은 대략적이며 chkfile.ozx의 이름을 변경한 후에 시작됩니다.

  • 1분 이하: Northwind_FE.mdb 확인 중인 파일이 누락된 것을 알 수 있습니다.
  • 2분: Northwind_FE.mdb 양식이 열리고 데이터베이스가 1분 안에 닫힙니다.
  • 3분: Northwind_FE.mdb 자동으로 닫히며 모든 작업을 저장합니다.