Özel Access uygulamasını uzaktan kapatma

Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı beceriler gerektirir.

Bu makale yalnızca bir Microsoft Access veritabanı (.mdb veya .accdb) için geçerlidir.

Özet

Bazen Microsoft Access veritabanında sıkıştırma veya onarma, yedek kopya oluşturma veya tasarım değişiklikleri yapma gibi bakım görevleri gerçekleştirmeniz gerekebilir. Bu işlemlerin çoğu, tüm kullanıcıların veritabanından çıkmasını gerektirir. Ancak, kullanıcıları Microsoft Access'ten çıkmak için zorlamanın yerleşik bir yolu yoktur. Ayrıca kullanıcının Ağ çözümleriyle bağlantısını kesmek iyi bir fikir değildir. Bu, veritabanının bozulmasına neden olabilir.

Bu makalede, ön uç Access veritabanı uygulamasını düzgün bir şekilde kapatmak için kullanabileceğiniz bir yaklaşım gösterilmektedir. Ayrıca veritabanını sıkıştırmak veya onarmak, yedek kopyaları oluşturmak vb. için bu kavramların çoğunu kullanabilirsiniz.

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna zımni garantiler, satılabilirlik veya belirli bir amaca uygunluk da dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Daha fazla bilgi

Çözüm Nasıl Çalışır?

Çözüm aşağıdaki gibi çalışır. Sunucuda, bir klasörde bir dosya vardır. Bu dosya herhangi bir adla adlandırılabilir. Bu çözüm için chkfile.ozx adlı bir dosya kullanılır. Bu dosya yeniden adlandırıldığında veya silindiğinde, ön uç Access uygulamasına kapatılması gerekenleri bildirir.

Kullanıcılar ön uç veritabanı uygulamasını başlattığında açılan bir form oluşturulur. Bu form, dosyanın sunucuda belirli bir aralıkta varlığını denetler. Bunu yapmak için TimerInterval özelliğini ve OnTimer olayını kullanır.

Dosya bulunursa hiçbir şey olmaz. Dosya bulunamazsa, form kullanıcıyı veritabanının belirli bir süre içinde otomatik olarak kapatılacağı konusunda uyarmak için başka bir form görüntüler.

Not

Bu çözüm, kullanıcıyı uyarmak için MsgBox işlevini kullanmaz. MsgBox işlevi herhangi bir kod çalıştırmadan önce kullanıcı girişini bekler. Bu, çözümün amacını yener.

İstemci oturumlarını düzgün bir şekilde kapatmak için bu çözüm, denetlenen dosyayı yeniden adlandırır. Yapılması gereken her şey tamamlandığında, bu çözüm dosyayı yeniden özgün adıyla yeniden adlandırır. Bu, kullanıcıların ön uç veritabanını yeniden başlatabileceklerini bilmesini sağlar.

Bu işlem, belirtilen zamanlarda chkfile.ozx dosyasını yeniden adlandıran sunucuda zamanlanmış bir hizmet kullanılarak katılımsız işlem sağlamak için de otomatikleştirilebilir.

Örnek Senaryo Oluşturma Adımları

Bu çözümün nasıl çalıştığını göstermek için aşağıdakilere sahip olmanız gerekir:

  • Sabit diskinizde C:\MyData yolunu içeren bir klasör.
  • Boş bir dosya. Bu çözüm, bu dosyanın olup olmadığını denetler.
  • Arka uç veritabanı dosyasındaki tablolar ve ön uç veritabanındaki bu tabloya bağlantılar içeren bölünmüş veritabanı tasarımı. Ön uç veritabanı, belirli bir aralıkta dosyanın varlığını denetleyecek ve kullanıcıyı uyaran kodu içerir.

Örnek uygulama için klasör oluşturma

C sürücüsünün kök dizininde bir klasör oluşturun ve myData olarak adlandırın.

Boş metin dosyası oluşturma

  1. MyData klasöründe yeni bir metin dosyası oluşturun ve chkfile.txt olarak adlandırın.
  2. Metin dosyasını ozx uzantısına (chkfile.ozx) sahip olacak şekilde yeniden adlandırın. İstendiğinde, dosya uzantısını değiştirmek istediğinizi onaylayın.

Arka uç veritabanını oluşturma

  1. C:\MyData klasöründe yeni bir veritabanı oluşturun ve Northwind_Be.mdb olarak adlandırın.
  2. Müşteriler tablosunu Northwind örnek veritabanından Northwind_Be.mdb veritabanına aktarın. (Northwind varsayılan olarak C:\Program Files\Microsoft Office\Office10\Samples konumundadır.)
  3. Veritabanını kapatın.

Ön uç veritabanını oluşturma

  1. Başka bir yeni veritabanı oluşturun ve Northwind_Fe.mdb olarak adlandırlayın.
  2. Northwind_Be.mdb veritabanındaki Müşteriler tablosunu yeni Northwind_Fe.mdb bağlama
  3. Bağlı Müşteriler tablosunu temel alan bir AutoForm oluşturun ve frmCustomers olarak kaydedin. Bu formu kapatın.

Dosyanın varlığını denetleen kodla form oluşturma

  1. İlişkisiz bir form oluşturun ve frmAppShutDown adıyla kaydedin. Üretim veritabanında bu form normalde her zaman açık olur ancak görünmez. Bu örnek için her zamanki gibi açık bırakılabilir.
  2. Formun TimerInterval özelliğini 60000 milisaniye olarak ayarlayın. Bu, bir dakikaya eşittir. (Kendi çözümünüz için bu zaman aralığını artırabilir veya vefat edebilirsiniz.)
  3. Microsoft Office Access 2003'te veya Access'in önceki sürümlerinde, frmAppShutDown formunun Tasarım görünümünde Görünüm menüsünde Kod'a tıklayın. Microsoft Office Access 2007'de, frmAppShutDown formunun Tasarım görünümünde Tasarım sekmesine ve ardından Araçlar grubunda Kodu Görüntüle'ye tıklayın. Aşağıdaki kodu yazın veya yapıştırın:
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. Formu kaydedin ve kapatın.

Kullanıcıyı uyarmak için kullanılacak formu oluşturma

Not

Kullanıcıyı uyarmak için MsgBox işlevini kullanmayın. MsgBox işlevi herhangi bir kod çalıştırmadan önce kullanıcı girişini bekler. Bu, çözümün amacını yener.

  1. İlişkisiz bir form oluşturun ve frmAppShutDownWarn olarak adlandırın. Aşağıdaki metin kutusu denetimini ekleyin:

    Name: txtWarning
    Type: Textbox
    
  2. Formu kaydedin ve kapatın.

  3. Başlangıçta frmCustomer formunu ve frmAppShutDown formunu açacak bir makro oluşturun. Makro autoexec adını verin.

  4. Veritabanını kapatıp yeniden açın.

  5. chkfile.ozx dosyasını chkfile.old olarak yeniden adlandırın.

Çözüm Olaylarının Zamanlaması

Not

Aşağıdaki sürelerin tümü yaklaşıktır ve chkfile.ozx yeniden adlandırıldıktan sonra başlar.

  • Bir dakika veya daha kısa: Northwind_FE.mdb denetlenen dosyanın eksik olduğunu fark eder.
  • İki dakika: Form Northwind_FE.mdb açılır ve veritabanının bir dakika içinde kapanacağını bildirir.
  • Üç dakika: Northwind_FE.mdb otomatik olarak kapanır ve tüm işleri kaydeder.