Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Άνοιγμα βάσης για αποκλειστική χρήση. (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3046-anoigma-basis-gia-apokleistiki-xrisi.html)

sarrpan 03-03-14 13:32

Άνοιγμα βάσης για αποκλειστική χρήση.
 
Καλησπέρα ξανά ελπίζω να είστε όλοι καλά και να περνάτε χαρούμενα τις απόκριες.
Θα ήθελα να ρωτήσω το εξής:
Έχω μία βάση δεδομένων σε έναν server την βάση θα την δουλεύουν π.χ 5 διαφορετικοί χρήστες και θα ήθελα όσο είναι ανοιχτή από έναν χρήστης να μην μπορεί να την ανοίξει άλλος. Δοκίμασα με την αποκλειστική χρήση από τις επιλογές Access σύνθετες επιλογές αλλά δεν έγινε τίποτα. Ανάμεσα στα άλλα που προσπάθησα είναι δημιούργησα μεταβλητή, πίνακα που προσπαθούσα να ελέγξω αν η τιμή είναι 1 αλλά αυτό δούλευε μόνο αν αυτός που είχε ανοίξει την βάση την έκλεινε. Τέλος πάντων δοκίμασα διάφορα αλλά δεν τα κατάφερα. Έτσι λοιπόν ήρθα να ζητήσω την βοήθεια σας.
Ευχαριστώ.

Tasos 03-03-14 15:02

Καλησπέρα!
Παναγιώτη δημιούργησε μια συντόμευση δεξί κλικ στην στην επιφάνεια εργασίας > Δημιουργία > Συντόμευση)
και πέρασε το παρακάτω κείμενο: X:\Data\Database.accdb /excl όπου X:\Data\Database.accdb = η διαδρομή του αρχείου.

Μετονόμασε τη συντόμευση όπως ταιριάζει και μοίρασε την στους υπόλοιπους χρήστες ώστε να ανοίγουν τη βάση μόνο όταν αυτή δεν χρησιμοποιείται.

Φιλικά

Τάσος

sarrpan 03-03-14 18:09

Τάσο καλησπέρα το /excl επειδή το είδα σε ένα βιβλίο το δοκίμασα έκανα μία συντόμευση της βάσης βρήκα την διαδρομή του αρχείο και πρόσθεσα στο τέλος το /excl αν θυμάμαι καλά μου έβγαλε μήνυμα σφάλματος. Επειδή δεν είμαι σίγουρος όμως θα το δω αύριο και θα απαντήσω.
Ευχαριστώ για το ενδιαφέρον.

sarrpan 04-03-14 08:57

Καλημέρα
 
Τάσο καλημέρα πήγα στην βάση έκανα συντόμευση μετά ιδιότητες στην καρτέλα συντόμευσης στην ένδειξη προορισμός αλλάζω το Z:\kataxorisi.accdb σε Z:\kataxorisi.accdb /excl όταν πατάω εφαρμογή βγάζει μήνυμα σφάλματος ότι το όνομα δεν είναι έγκυρο. Αν δεν πατήσω το εφαρμογή ανοίγει η βάση από δύο διαφορετικούς υπολογιστές. Ευχαριστώ.

Tasos 04-03-14 09:07

Το μήνυμα σφάλματος σου λέει καθαρά ότι το όνομα ειναι λάθος.

Άρα θα πρέπει να προσέξεις τη σύνταξη του ορίσματος δηλ. Z:\kataxorisi.accdb ένα κενό και /exc

Φιλικά

Τάσος

sarafis 04-03-14 09:18

Παναγιώτη καλημέρα
Δοκίμασε
"Z:\kataxorisi.accdb" /excl

sarrpan 04-03-14 09:51

Καλημέρα.
 
Καλημέρα δεν έβαζα το κενό γι αυτό δεν δούλευε τώρα που το δοκίμασα δουλεύει αλλά μετά το μήνυμα ότι η βάση είναι ανοιχτή αφήνει ανοιχτό το περιβάλλον της access αυτό μήπως γίνεται να κλείνει μόνο του; Επίσης έκανα έναν πίνακα και από εκεί ελέγχο (με check box (0, -1) αν έχει ανοίξει η συγκεκριμένη φόρμα καταχώρησης, την έκανα και αποκλειστική και αναδυόμενη. Δουλεύει όταν όλα ανοίξουν και κλείσουν κανονικά σε δοκιμή όμως που έκανα να κλείσω την βάση "βίαια" π.χ διακοπή ρεύματος, όπως το περίμενα δεν δουλεύει μήπως έχετε υπόψη κάτι που μπορεί να γίνει γι αυτό ( κάτι σαν όταν η βάση είναι κλειστή και ανοίγει για πρώτη φορά να ορίζεται το check box σε -1);
Ευχαριστώ.

Tasos 04-03-14 10:55

Παναγιώτη, φρόντισε στον 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, φρόντισε αφού περάσεις την ενέργεια
"Εκτέλεση κώδικα" να την μεταφέρεις στην πρώτη θέση.

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

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

Τάσος

sarrpan 04-03-14 11:45

Καλησπέρα.
 
Τάσο ευχαριστώ πολύ για την απάντηση.

sarrpan 04-03-14 12:10

Καλησπέρα.
 
Τάσο έκανα αυτά που είπες δηλαδή τσέκαρα την βιβλιοθήκη που λες δημιούργησα και την μακροεντολή κατά την εκκίνηση μου βγάζει μήνυμα λάθους στο
Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
αναφέροντας ότι το αντικείμενο ή υπηρεσία παροχής δεν είναι δυνατό να πραγματοποιήσει την λειτουργία που ζητήσατε.

Tasos 04-03-14 13:04

Παναγιώτη, Η βάση σου δεν χρειάζεται ειδικές παραμέτρους εκκίνησης ( /incl) μετά τη χρήση της συνάρτησης .

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

Τάσος

sarrpan 04-03-14 14:03

Καλησπέρα.
 
Τάσο καλησπέρα είχα ξεχάσει ότι εχθές στην προσπάθεια μου είχα επιλέξει την αποκλειστική χρήση. Δουλεύει μια χαρά. Ευχαριστώ πολύ.

Tasos 04-03-14 14:15

Να είσαι καλά φίλε μου.

Καλή συνέχεια!


Η ώρα είναι 08:23.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2