Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Η βάση να ανοίγει μόνο γιά αναγνωση

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 24-07-20, 22:00
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-07-2014
Περιοχή: Πάτρα
Μηνύματα: 385
Προεπιλογή Η βάση να ανοίγει μόνο γιά αναγνωση

Καλησπέρα

Μια φόρμα μπορούμε, μέσα από τις ιδιότητες, να τη ρυθμίσουμε ώστε να είναι μόνο για ανάγνωση!

Είναι δυνατόν, να γενικεύσουμε τη ρύθμιση αυτή (με κώδικα σε ένα κουμπί εντολής) έτσι ώστε όλες οι φόρμες τής βάσης δεδομένων
να είναι μόνον για ανάγνωση και το αντίστροφο (πλήρη λειτουργικότητα)?


Σας ευχαριστώ εκ των προτέρων
Απάντηση με παράθεση
  #2  
Παλιά 28-07-20, 19:08
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα Δημήτρη!

Θα πρέπει να απενεργοποιείς προγραμματιστικά τη δυνατότητα καταχώρησης, επεξεργασίας και διαγραφής δεδομένων για κάθε φόρμα με μια ρουτίνα που θα ελέγχει τα δικαιώματα του τρέχοντος χρήστη.

Αυτό είναι το ένα σκέλος.

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

Εναλλακτικά μπορείς να δημιουργήσεις αντίγραφα των φορμών που στη συνέχεια θα τροποποιήσεις έτσι ώστε να συμπεριφέρονται σαν "ReadOnly".

Έτσι με τη χρήση κώδικα και αναλόγως τα δικαιώματα του τρέχοντος χρήστη θα φορτώνονται οι κατάλληλες φόρμες κάθε φορά.

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #3  
Παλιά 29-07-20, 01:04
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-07-2014
Περιοχή: Πάτρα
Μηνύματα: 385
Προεπιλογή

Γεια σας

Τάσο σε ευχαριστώ γιά την απάντησή σου.

Προσπάθησα να απενεργοποιήσω προγραμματιστικά τη δυνατότητα καταχώρησης, επεξεργασίας και διαγραφής δεδομένων
για κάθε φόρμα, σε επίπεδο τρέχοντος χρήστη, (κάνοντας χρήση των, AllowAdditions, AllowDeletions, AllowEdits επάνω
στο παράδειγμα που ανέβασε πρόσφατα ο φίλος Βραχνάκης Γιώργος - το οποίο σχετίζεται με δικαιώματα χρηστών),
αλλά δεν βλέπω να τα καταφέρνω με τον πρόσθετο κώδικα!

Αν μπορείς να ανεβάσεις κάποιο παράδειγμα θα μου έδινες πολύτιμη βοήθεια!

Καλή συνέχεια...
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb PermUser(1).accdb (604,0 KB, 4 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 29-07-20, 08:40
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλημέρα Δημήτρη,

Δες ένα παράδειγμα για το ζητούμενο σου.

Δες την διαφορά της φόρμας frmUser ανάλογα με το λογαριασμό που κάνεις login στην εφαρμογή πατώντας το κουμπί «Άνοιγμα φόρμας FrmUser» από την φόρμα frm_Home.

Ευχαριστώ.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip PermUser(1).zip (71,0 KB, 23 εμφανίσεις)
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
  #5  
Παλιά 29-07-20, 11:21
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα σε όλους!

Γιώργο, Δημήτρη, θέλω να σας ευχαριστήσω για τη συμμετοχή και τη δραστηριότητα σας στο φόρουμ!

Δημήτρη, το παραδειγματικό αρχείο του Γιώργου νομίζω ότι σε καλύπτει σε μεγάλο βαθμό. Αν χρειαστείς κάτι άλλο, εδώ είμαστε.

Αυτό που πρέπει σίγουρα να ελέγξεις είναι ποια από τα στοιχεία ελέγχου στις φόρμες μπορούσαν με το κλικ ή με κάποιο άλλο συμβάν να προκαλέσουν έμμεσα ή άμεσα αλλαγές στις εγγραφές των πινάκων και χρησιμοποιώντας κώδικα VBA ή τροποποίηση της μακροεντολής, να τα απενεργοποιήσεις ή να αποκρύψεις.

Αυτό γιατί το να ανοίξεις τη φόρμα σε κατάσταση μόνο για ανάγνωση δεν αποτρέπει την αλλοίωση δεδομένων που προέρχεται από VBA ή μακροεντολή της Access.

Με εκτίμηση
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #6  
Παλιά 29-07-20, 12:08
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-07-2014
Περιοχή: Πάτρα
Μηνύματα: 385
Προεπιλογή

Καλημέρα σε όλους

Τάσο και Γιώργο, ευχαριστώ για τις απαντήσεις σας.
Είμαι ειλικρινά υπόχρεος που ασχοληθήκατε με το θέμα μου!

Πράγματι η φόρμα [frmUser] είναι "ReadOnly".
Ωστόσο, από κάποιες πρόχειρες δοκιμές που έκανα, αυτό δεν ισχύει για άλλες φόρμες που προσθέτουμε
στην παραδειγματική βάση. Και οι φόρμες στη βάση μου είναι αρκετές.

Το ζητούμενο είναι ανοίγοντας τη βάση ως χρήστης1, ας πούμε, όλες οι φόρμες που εμπεριέχονται
στην τρέχουσα βάση να είναι "ReadOnly"!


Τώρα, σχετικά με την υπόδειξή σου Τάσο "να επισημάνεις ποια από τα στοιχεία ελέγχου στις φόρμες μπορούσαν
με το κλικ ή με κάποιο άλλο συμβάν να προκαλέσουν έμμεσα ή άμεσα αλλαγές στις εγγραφές των πινάκων και
χρησιμοποιώντας κώδικα VBA να τα απομονώσεις
",
πραγματικά δεν γνωρίζω πως μπορεί να γίνει αυτό σε κάθε περίπτωση συμβάντος.

Απλά, υποθέτω ότι, σε κάθε συμβάν,όπου χρειάζεται, θα πρέπει να προστεθεί επιπλέον κώδικας
ο οποίος να ακυρώνει τη λειτουργία της τρέχουσας VBA του συμβάντος, εφόσον η βάση λειτουργεί με δικαιώματα χρήστη1.

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

Τελευταία επεξεργασία από το χρήστη dimitrisp : 29-07-20 στις 12:29.
Απάντηση με παράθεση
  #7  
Παλιά 29-07-20, 15:37
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλησπέρα σε όλοι την παρέα.

Φιλέ Τάσο οι «παρατηρήσεις» σου είναι ουσιαστικές και πάντα πολλά βήματα μπροστά.

Φιλέ Δημήτρη αυτό που λες: Το ζητούμενο είναι ανοίγοντας τη βάση ως χρήστης1, ας πούμε, όλες οι φόρμες που εμπεριέχονται στην τρέχουσα βάση να είναι "ReadOnly"!

Δεν είναι και τόσο εύκολο να πραγματοποιηθεί γιατί οι φόρμες είναι αντικείμενα με ιδιότητες και οι φόρμες έχουν αλλά αντικείμενα απάνω με διάφορες ιδιότητες (Τάσος).

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

Ο παρακάτω κώδικας ανοίγει οποιαδήποτε φόρμα που θα πάρει σαν ορμιά aForm και ανάλογα με το UserGroup που ανήκει ο χρήστης θα ανοίξει την φόρμα κανονικά ή ReadOnly.

Function OpenForm(ByVal aForm As Form, ByVal UserGroup As Integer)
If UserGroup = 1 Then
DoCmd.OpenForm aForm.Name, acNormal
ElseIf UserGroup = 2 Then
DoCmd.OpenForm aForm.Name, acNormal, , , acFormReadOnly
End If
End Function

Έτσι λοιπόν σε κάθε συμβάν που έχεις και ανοίγεις κάποια φόρμα στην βάση σου θα πρέπει να καλείς την συνάρτηση «OpenForm» με ορίσματα την φόρμα που θέλεις να ανοίξεις «Form_frmUser» και «UserGroup».

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

Βέβαια μπορείς να κάνεις και αυτό που σου πρότεινε παραπάνω ο Τάσος να έχεις διπλές (με έτοιμες τις ιδιότητες ReadOnly) φόρμες και ανάλογα τον χρήστη να ανοίγεις την φόρμα που πρέπει κάθε φορά.

Ευχαριστώ.
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com

Τελευταία επεξεργασία από το χρήστη vraxnakisg : 29-07-20 στις 21:04.
Απάντηση με παράθεση
  #8  
Παλιά 30-07-20, 00:06
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-07-2014
Περιοχή: Πάτρα
Μηνύματα: 385
Προεπιλογή

Γεια σας

Γιώργο, οι σαφείς παρατηρήσεις σου καθώς και οι ακριβείς επισημάνσεις σου, σχετικά με την επίλυση του ζητούμενου,
θεωρώ ότι έγιναν κατανοητές (;) εκ μέρους μου.

Θα προσπαθήσω να τις εφαρμόσω και θα επανέλθω...

Σε κάθε περίπτωση, εκφράζω θερμές ευχαριστίες τόσο σε εσένα αλλά και στον Τάσο
για την ανεκτίμητη βοήθεια που μας προσφέρετε!

Να είστε πάντα καλά.
Καλή συνέχεια...
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
να ανοίγει μια συγκεκριμένη φόρμα απο ένα άλλο αρχείο της Access pakos Access - Ερωτήσεις / Απαντήσεις 1 14-10-17 20:09
[ Πίνακες ] Αντιγραφή πινάκων από τρέχουσα βάση σε νέα βάση apostolos Access - Ερωτήσεις / Απαντήσεις 11 04-03-16 22:43
[Excel07] Error κατά το άνοιγμα "...δεν είναι δυνατή η ανάγνωση.." jockey17 Excel - Ερωτήσεις / Απαντήσεις 2 23-05-14 16:15
Μεταφορές πινάκων από βάση σε βάση parara Access - Ερωτήσεις / Απαντήσεις 8 18-04-14 14:14
Report με μονο ενα record koxcygr Access - Ερωτήσεις / Απαντήσεις 2 31-12-09 10:58


Η ώρα είναι 07:58.