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/3070-elegxos-ektelesis-efarmogis-kai-kleidoma.html)

parara 20-03-14 20:00

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

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.


Search Engine Optimization by vBSEO 3.3.2