Εμφάνιση ενός μόνο μηνύματος
  #8  
Παλιά 04-03-14, 10:55
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.010
Προεπιλογή

Παναγιώτη, φρόντισε στον VBE να προσθέσεις την αναφορά Microsoft ActiveX Data Objects 2.8 Library (Tools > References).

Κατόπιν σε μια λειτουργική μονάδα (module) πέρασε αυτή τη συνάρτηση:
Κώδικας:
Function CheckIfDatabaseIsInUse()
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim i As Integer
    Set cn = CurrentProject.Connection
    Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
    While Not rs.EOF
        i = i + 1
        rs.MoveNext
    Wend
    If i > 1 Then
        MsgBox "Η βάση χρησιμοποιείται ήδη. Η εφαρμογή θα τερματιστεί.", vbInformation
        Application.Quit
    Else
        rs.Close
        Set rs = Nothing
    End If
End Function
Δημιούργησε μια μακροεντολή (Καρτέλα Δημιουργία > Μακροεντολή) με το όνομα AutoExec
και πρόσθεσε την ενέργεια "Εκτέλεση κώδικα".

Στο όρισμα συνάρτησης δώσε το CheckIfDatabaseIsInUse().

Αν ήδη υπάρχει η μακροεντολή AutoExec, φρόντισε αφού περάσεις την ενέργεια
"Εκτέλεση κώδικα" να την μεταφέρεις στην πρώτη θέση.

Η βάση σου δεν χρειάζεται ειδικές παραμέτρους εκκίνησης μετά τη χρήση των παραπάνω.

Αν οι χρήστες της βάσης είναι περισσότεροι από έναν, η εφαρμογή θα τερματιστεί.
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση