![]() |
Έλεγχος εκτέλεσης εφαρμογής και κλείδωμα. Μετά από αρκετές προσπάθειες κατάφερα να δημιουργήσω ένα "τρικ" ώστε να μπορεί κάποιος να ελέγχει πόσες φορές τρέχει μια εφαρμογή , να εμφανίζει μήνυμα μετά από ένα συγκεκριμένο αριθμό χρήσεων και να ζητά κωδικό για να συνεχιστεί η εκτέλεσή της. Το "τρικ" στηρίζεται σε ένα πίνακα με τα παρακάτω πεδία IDrecTimes (Αριθμός) Rec1 (Αριθμός) ' Βάζουμε 1 από εδώ ξεκινά η αρίθμηση' Rec2 (Αριθμός) ' Βάζουμε τον αριθμό στον οποίο θέλουμε να φτάσει η εκτέλεση πχ 200' Rec3 (Κείμενο) ' Βάζουμε τον κωδικό με τον οποίο θα ξεμπλοκάρουμε την εφαρμογή' sn (αριθμός σειράς) 'Βάζουμε τον αριθμό σειράς της εφαρμογής μας' Rec4 (Αριθμός) ' Βοηθητικό πεδίο' Τι έκανα!! 1.Στην αρχική φόρμα που ξεκινά η εφαρμογή τροφοδοτείται από τον πίνακα tblTimes που περιέχει τα πεδία που προανέφερα. 2.Δημιούργησα δύο πλαίσια κειμένου το Rec1 (τροφοδοτείται από το αντίστοιχο πεδίο Rec1 του πίνακα) και το Rec2 (τροφοδοτείται από το πεδίο Rec2). Αυτά τα δύο πεδία μετά τις δοκιμές που θα κάνετε , θα τα ορίσετε σε κατάσταση 'μη ορατό' 3. Στην φόρμα εκκίνησης , στο συμβάν 'με το άνοιγμα' έβαλα τον παρακάτω κώδικα Dim dbsesex As Database Dim rstREC As DAO.Recordset Dim t As Long Set dbsesex = CurrentDb Set rstREC = dbsesex.OpenRecordset("tblTimes") Set rstREC = dbsesex.OpenRecordset("SELECT * FROM tblTimes where IDrecTimes = 1") t = Rec1 + 1 If t >= Rec2 Then DoCmd.OpenForm "frmTest1" End If rstREC.Edit rstREC!Rec1 = t rstREC.Update Αυτός διαβάζει από την βάση τον πίνακα tblTimes Αυξάνει την μεταβλητή t κατά 1 + τον αριθμό που είναι αποθηκευμένος στο πεδίο Rec1 του πίνακα κάθε φορά που ανοίγει η φόρμα εκκίνησης. Ελέγχει με μια if αν η t είναι ίση ή μεγαλύτερη από την εγγραφή Rec2 στον πίνακα tblTimes. Αν έχουμε φτάσει η ξεπεράσει τον αριθμό στην εγγραφή Rec2 τότε εμφανίζει την φόρμα Test1 (εξηγώ παρακάτω) , διαφορετικά προσθέτει στο πεδίο Rec1 την νέα τιμή (το αυξάνει κατά 1 στην ουσία) ώστε να χρησιμοποιηθεί στο επόμενο άνοιγμα της φόρμας. Τώρα!!! Στην φόρμα frmTest1 η οποία τροφοδοτείται και αυτή από τον πίνακα tblTimes , έβαλα 3 πλαίσια κειμένου. Ένα με όνομα sn (τροφοδοτείται από το sn του tblTimes) , ένα με όνομα Rec3 (τροφοδοτείται από το Rec3 του tblTimes) , και τέλος ένα 'μη δεσμευμένο' με όνομα code , το οποίο το χρησιμοποιώ για να πληκτρολογήσει ο χρήστης τον κωδικό 'απεμπλοκής'. Το πεδίο Rec3 θα πρέπει να είναι 'μη ορατό'. Όταν λοιπόν εμφανισθεί η φόρμα frmTest1 προειδοποιώντας τον χρήστη ότι πρέπει να εισάγει ένα κωδικό , ότι πληκτρολογήσει σε αυτό το πλαίσιο (το code) θα συγκριθεί με αυτό που είναι αποθηκευμένο στον πίνακα tblTimes και που υπάρχει στο πεδίο Rec1 της frmTest1 (Που φυσικά δεν φαίνεται). Αυτό θα γίνει αν στο συμβάν 'μετά από ενημέρωση' βάλω τον παρακάτω κώδικα. Dim dbsesex As Database Dim rstREC As DAO.Recordset Dim ok As Boolean Dim i As Integer Set dbsesex = CurrentDb Set rstREC = dbsesex.OpenRecordset("tblTimes") Set rstREC = dbsesex.OpenRecordset("SELECT * FROM tblTimes where IDrecTimes = 1") For i = 1 To 3 Me.Msg1.Visible = False If Code = Rec3 Then rstREC.Edit rstREC!Rec1 = 0 rstREC.Update ok = True Else Me.Msg1.Visible = True ok = False End If Next i If ok = True Then Me.ButtonOK.Visible = True Else DoCmd.Close End If Ο κώδικας δίνει στον χρήστη το περιθώριο να πληκτρολογήσει το σωστό κωδικό 3 φορές (η περισσότερες όσες ορίσουμε εμείς στο βρόγχο for) , ελέγχει αν είναι σωστός ο κωδικός , και αν είναι μηδενίζει την εγγραφή στο πεδίο Rec1 κάνοντας την εφαρμογή να μπορεί να μετρά πάλι από την αρχή. Εμφανίζει και ένα μήνυμα ότι ο κωδικός είναι σωστός καθώς και ένα πλήκτρο με το οποίο θα κλείσει η φόρμα frmTest1. Κλείνοντας , θεώρησα καλύτερο να σπαταλήσω λίγο χρόνο γράφοντας και εξηγώντας τι έκανα παρά να βάλω απ' ευθείας μια βάση με 2 φόρμες κι ένα πίνακα χωρίς εξηγήσεις. Στις δοκιμές που έκανα φαίνεται να δουλεύει καλά , ενώ σίγουρα θα επιδέχεται βελτιώσεις από πιο έμπειρους. Δεν ξέρω αν υπάρχει κάτι τέτοιο παρόμοιο στο forum. Τέλος στα πεδία του πίνακα tblTimes μπορούν να προστεθούν και άλλα ώστε να γίνεται μεγαλύτερος και καλύτερος έλεγχος της εφαρμογής σας. Αν σε κάποιον τα παραπάνω του φανούν χρήσιμα και θέλει βοήθεια , ευχαρίστως. |
| Η ώρα είναι 06:48. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.