| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Καλησπέρα ξανά ελπίζω να είστε όλοι καλά και να περνάτε χαρούμενα τις απόκριες. Θα ήθελα να ρωτήσω το εξής: Έχω μία βάση δεδομένων σε έναν server την βάση θα την δουλεύουν π.χ 5 διαφορετικοί χρήστες και θα ήθελα όσο είναι ανοιχτή από έναν χρήστης να μην μπορεί να την ανοίξει άλλος. Δοκίμασα με την αποκλειστική χρήση από τις επιλογές Access σύνθετες επιλογές αλλά δεν έγινε τίποτα. Ανάμεσα στα άλλα που προσπάθησα είναι δημιούργησα μεταβλητή, πίνακα που προσπαθούσα να ελέγξω αν η τιμή είναι 1 αλλά αυτό δούλευε μόνο αν αυτός που είχε ανοίξει την βάση την έκλεινε. Τέλος πάντων δοκίμασα διάφορα αλλά δεν τα κατάφερα. Έτσι λοιπόν ήρθα να ζητήσω την βοήθεια σας. Ευχαριστώ. |
|
#2
| ||||
| ||||
|
Καλησπέρα! Παναγιώτη δημιούργησε μια συντόμευση δεξί κλικ στην στην επιφάνεια εργασίας > Δημιουργία > Συντόμευση) και πέρασε το παρακάτω κείμενο: X:\Data\Database.accdb /excl όπου X:\Data\Database.accdb = η διαδρομή του αρχείου. Μετονόμασε τη συντόμευση όπως ταιριάζει και μοίρασε την στους υπόλοιπους χρήστες ώστε να ανοίγουν τη βάση μόνο όταν αυτή δεν χρησιμοποιείται. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#3
| |||
| |||
|
Τάσο καλησπέρα το /excl επειδή το είδα σε ένα βιβλίο το δοκίμασα έκανα μία συντόμευση της βάσης βρήκα την διαδρομή του αρχείο και πρόσθεσα στο τέλος το /excl αν θυμάμαι καλά μου έβγαλε μήνυμα σφάλματος. Επειδή δεν είμαι σίγουρος όμως θα το δω αύριο και θα απαντήσω. Ευχαριστώ για το ενδιαφέρον. |
|
#4
| |||
| |||
|
Τάσο καλημέρα πήγα στην βάση έκανα συντόμευση μετά ιδιότητες στην καρτέλα συντόμευσης στην ένδειξη προορισμός αλλάζω το Z:\kataxorisi.accdb σε Z:\kataxorisi.accdb /excl όταν πατάω εφαρμογή βγάζει μήνυμα σφάλματος ότι το όνομα δεν είναι έγκυρο. Αν δεν πατήσω το εφαρμογή ανοίγει η βάση από δύο διαφορετικούς υπολογιστές. Ευχαριστώ.
|
|
#5
| ||||
| ||||
|
Το μήνυμα σφάλματος σου λέει καθαρά ότι το όνομα ειναι λάθος. Άρα θα πρέπει να προσέξεις τη σύνταξη του ορίσματος δηλ. Z:\kataxorisi.accdb ένα κενό και /exc Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#6
| |||
| |||
|
Παναγιώτη καλημέρα Δοκίμασε "Z:\kataxorisi.accdb" /excl |
|
#7
| |||
| |||
|
Καλημέρα δεν έβαζα το κενό γι αυτό δεν δούλευε τώρα που το δοκίμασα δουλεύει αλλά μετά το μήνυμα ότι η βάση είναι ανοιχτή αφήνει ανοιχτό το περιβάλλον της access αυτό μήπως γίνεται να κλείνει μόνο του; Επίσης έκανα έναν πίνακα και από εκεί ελέγχο (με check box (0, -1) αν έχει ανοίξει η συγκεκριμένη φόρμα καταχώρησης, την έκανα και αποκλειστική και αναδυόμενη. Δουλεύει όταν όλα ανοίξουν και κλείσουν κανονικά σε δοκιμή όμως που έκανα να κλείσω την βάση "βίαια" π.χ διακοπή ρεύματος, όπως το περίμενα δεν δουλεύει μήπως έχετε υπόψη κάτι που μπορεί να γίνει γι αυτό ( κάτι σαν όταν η βάση είναι κλειστή και ανοίγει για πρώτη φορά να ορίζεται το check box σε -1); Ευχαριστώ. |
|
#8
| ||||
| ||||
|
Παναγιώτη, φρόντισε στον 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
και πρόσθεσε την ενέργεια "Εκτέλεση κώδικα". Στο όρισμα συνάρτησης δώσε το CheckIfDatabaseIsInUse(). Αν ήδη υπάρχει η μακροεντολή AutoExec, φρόντισε αφού περάσεις την ενέργεια "Εκτέλεση κώδικα" να την μεταφέρεις στην πρώτη θέση. Η βάση σου δεν χρειάζεται ειδικές παραμέτρους εκκίνησης μετά τη χρήση των παραπάνω. Αν οι χρήστες της βάσης είναι περισσότεροι από έναν, η εφαρμογή θα τερματιστεί. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#9
| |||
| |||
|
Τάσο ευχαριστώ πολύ για την απάντηση.
|
|
#10
| |||
| |||
|
Τάσο έκανα αυτά που είπες δηλαδή τσέκαρα την βιβλιοθήκη που λες δημιούργησα και την μακροεντολή κατά την εκκίνηση μου βγάζει μήνυμα λάθους στο Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") αναφέροντας ότι το αντικείμενο ή υπηρεσία παροχής δεν είναι δυνατό να πραγματοποιήσει την λειτουργία που ζητήσατε. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| Άνοιγμα βάσης από άλλη βάση | anestaki | Access - Ερωτήσεις / Απαντήσεις | 7 | 06-12-15 17:02 |
| Κοινή χρήση βάσης δεδομένων | xristos | Access - Ερωτήσεις / Απαντήσεις | 0 | 18-02-14 14:33 |
| Άνοιγμα μιας άλλης υπάρχουσας βάσης και μεταφορά κάποιων δεδομένων από την υπάρχουσα | migimis | Access - Ερωτήσεις / Απαντήσεις | 4 | 24-01-12 09:45 |
| Άνοιγμα βάσης δεδομένων | ntelios | Access - Ερωτήσεις / Απαντήσεις | 2 | 30-03-10 18:34 |
| Άνοιγμα βάσης απο τον Πίνακα ελέγχου | Melisson | Access - Ερωτήσεις / Απαντήσεις | 7 | 01-03-09 13:27 |
Η ώρα είναι 13:10.


Υβριδικός τρόπος

