Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Εντολή μή εκτέλεσης κώδικα vba (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/2898-entoli-mi-ektelesis-kodika-visual-basic-applications.html)

γιώργοςΚ 04-01-14 01:26

Εντολή μή εκτέλεσης κώδικα vba
 
Καλημέρα,

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

Εφόσον εκτελεστεί ο κώδικας μέσω του cmdbutton το οποίο θα το πατήσει κάποιος μόνον την πρώτη φορά που θα χρησιμοποιήσει την εφαρμογή, υπάρχει κάποιος τρόπος να σταματήσουν να εμφανίζονται τα σχετικά μηνύματα που δίνει όταν εκτελείται ο κώδικας? Μήπως κάποια σχετική εντολή vba ή ακόμα και μακροεντολή?

Ευχαριστώ

sarafis 04-01-14 09:29

Γιωργο καλημέρα
Εκτιμώ πως με μια συνθήκη μπορείς να εξαιρέσεις την εκτέλεση του κώδικα.
if dcount("eponymo","tblstoixeiaxristi") =0 then
"εκτέλεση του κώδικα"
else
exit sub
end if

γιώργοςΚ 04-01-14 16:17

Γειά σου Στέλιο

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

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

1. Κατα την διαδικασία εγκατάστασης της εφαρμογής καταχωρείται η ημερομηνία εγκατάστασης στον πίνακα tblInstallation, καθώς επίσης και η διάρκεια της δοκιμαστικής περιόδου όπως αυτή καθορίζεται από εμένα σε ημέρες (πχ 30 μέρες). Η καταχώρηση αυτή γινεται στο πεδίο RegDays.

2.Με κώδικα κάθε φορά που ανοίγει η εφαρμογή βγάζει μηνυμα ότι απομένουν πχ. 29 μέρες, 28, 27 κλπ. Τώρα, οταν ο χρόνος αυτός παρέλθει τότε η εφαρμογή δίνει το σχετικό μήνυμα και 2 επιλογές. Με την επιλογή Registration ανοίγει η σχετική φόρμα έτσι ώστε ο χρήστης να προχωρήσει στην διαδικασία του registration. Οταν και εφόσον ολοκληρώσει την διαδικασία τότε εμφανίζεται ένα σχετικό μήνυμα και εδώ είναι τώρα το πρόβλημα μου. Εφόσον ο χρήστης έκανε την εγραφή του άρα αγόρασε την εφαρμογή, συνεπάγεται ότι πλέον ο κώδικας ελέγχου της διαδικασίας ελέγχου θα πρεπει να πάψει να εκτελείται όπώς επίσης θα πρέπει να σταματήσουν και τα σχετικά μηνύματα να εμφανίζονται

sarafis 05-01-14 01:18

Γιώργο καλημέρα

Όπως και να έχει, για την αποτροπή εκτέλεσης του κώδικα θα χρησιμοποιήσεις συνθήκες if. Ίσως περισσότερες από μία, ανάλογα πως έχεις σκεφτεί να υλοποιήσεις το registration.
Η πρώτη συνθήκη θα ελέγχει αν έχει καταχωρηθεί η αρχική ημερομηνία καταχώρησης και τα στοιχεία του χρήστη. Η δεύτερη εφόσον ικανοποιείται η πρώτη συνθήκη θα ελέγχει αν έχουν συμπληρωθεί οι ημέρες της δοκιμής. Η τρίτη, όταν έχουν ολοκληρωθεί οι ημέρες της δοκιμής, εάν η βάση έχει γίνει register.
Η κάθε συνθήκη θα εξαιρεί και κάποιο κομμάτι του κώδικα. Όταν η βάση γίνει register η τρίτη συνθήκη θα εξαιρέσει και το τελευταίο κομμάτι του κώδικα που θα εκτελείται και η βάση θα είναι πλέον πλήρως λειτουργική.

γιώργοςΚ 05-01-14 16:52

Καλησπέρα Στέλιο,

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

Σε ευχαριστώ εκ προτέρων..

Φιλικά,

Γιώργος

γιώργοςΚ 05-01-14 16:57

1 Συνημμένο(α)
Στέλιο συνημμένο το αρχείο.

Κωδικοί Πρόσβασης;
User Name: Admin (password "marianna")
gstylianou (password "1234")
george (password "1234")

alex 14-01-14 00:00

Γιώργο καλησπέρα!!

Κατέβασε από το παρακάτω σύνδεσμο την βάση σου με επανεκκίνηση Demo.

https://drive.google.com/file/d/0Byr...it?usp=sharing
Όλοι οι κωδικοί
[arta]

γιώργοςΚ 14-01-14 07:16

Καλημέρα Αλέξανδρε

Προσπάθησα να κατεβάσω το αρχείο αλλά δεν γίνεται τίποτα...(?). Απλά κάνω κλίκ στο link του αρχείου και δεν γίνεται κάτι μετά από αυτό. Υπάρχει κάτι άλλο

Υ.Γ: σε ευχαριστώ πάρα πολύ που αφιέρωσες χρόνο φίλε για το θέμα μου. Το εκτιμώ.

Με εκτίμηση

Γιώργος

alex 14-01-14 08:17

Καλημέρα Γιώργο!!!!

Πάρε αυτό και κάνε λήψη

https://drive.google.com/file/d/0Byr...it?usp=sharing

οι κωδικοί [arta]
Registration code
όλα [00000000]

Η βάση σου είναι φτιαγμένη για να επαληθεύει τον registration code από τον πίνακα.
Για να γίνει αυτό που ζητάς θα πρέπει να καταχωρείτε στο μητρώο(Registry) κάποιες τιμές.
Ρίξε μια ματιά στη φόρμα F_Generator.
Αφού σου εμφανίζει τον κωδικό προιόντος στη φόρμα σου τον βάζεις στη θέση της φόρμας F_Generator.και κατασκευάζεις αυτόματα τις τιμές που θα αποθηκευτούν στο Μητρώο.
Θέλει όμως αλλαγή η βάση ώστε να κάνει αυτή την δουλειά και όχι την επαλήθευση από πίνακα.
με τον πίνακα θέλει να ξεχωρίσεις την βάση γιατί οποιοσδήποτε μπορεί να έχει πρόσβαση εκεί και να αλλάζει τα στοιχεία.
Εάν πληκτρολογήσεις στην έναρξη το [regedit] θα σε πάει στο μητρώο εκεί θα δείς HKEY_CURRENT_USER--->HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Εκεί αποθηκεύονται οι τιμές των προγραμμάτων .
Πχ στη φόρμα frmwelcom(δεν την έχω συνδέσει) στο κωδικα θα δείς

SaveSetting "MyDatabase", UserRegKey, "Version", Reg_SZ
Η διαδρομή της στο registry είναι η παρακάτω

HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyDatabase

Εάν τώρα σβήσεις την τιμή που εμφανίζεται στο registry που για την φόρμα αυτή είναι η έκδοση(Version) τότε είναι σαν να ξεκλειδώνεις την βάση.
Θέλει όμως πολύ δουλειά .
Δοκίμασε τώρα αυτά που σου είπα.Κάποια στιγμή θα φτάσουμε και μέχρι εκεί.

alex 14-01-14 08:44

Γίωργο!!

Θα σε βολέψει καλύτερα αυτή η βάση κατέβασε

https://drive.google.com/file/d/0Byr...it?usp=sharing

έχω αλλάξει λίγο τον κώδικα.
Τώρα όπως είναι είναι για ένα χρόνο
Άλλαξε την ημερομηνία του υπολογιστή και βάλε ένα χρόνο μετά το 2015 και ξανα άνοιξε την βάση να δείς τι θα συμβεί.
Τότε ακολουθείς την διαδικασία της νέας φόρμας πατώντας στην άκρη δεξιά το check box επιλέγεις ναι ανοίγει η φόρμα με το registration code και βάζεις στο χρήστη κωδικό [arta] και στον κωδικό registry το [0000000] όλα μηδέν.
Βγαίνεις από την βάση και ξανα μπαίνεις και ανοίγει κανονικά για ένα χρόνο χωρίς να εμφανίζει μηνύματα.
Επίσης μπορείς να μπείς με κωδικό πάλι [arta] αφού κάνεις Login και σε πάει στη φόρμα με τις 2 επιλογές Τιμολόγια και Admin .
Πατάς Admin και κωδικό [arta] και OK
Ανοίγει η νέα φόρμα και τότε σβήνεις τις μέρες από το κάτω πλαίσιο κειμένου και βάζεις για παράδειγμα 35 ημέρες πατάς αποθήκευση και ξανα τρέχεις την βάση και θα έχει ισχύ μόνο για 35 ημέρες.
Με το πέρας των ημερών θα σου εμφανίσει το γνωστό μήνυμα και πάλι από την αρχή.
Αυτά φίλε μου κοιταξέτα και Καλή συνέχεια!!!!!!!

γιώργοςΚ 14-01-14 10:10

Καλημέρα Αλέξανδρε και πάλι,

Έχω κατεβάσει και τα δύο συνημμένα, με το πρώτο να δουλεύει όντως όπως επιθυμώ, αλλά το δεύτερο αν και δουλεύει δεν βγάζει τα msgs (πχ 30 μέρες, 29,28 κλπ) (??)

Σχετικά με το πρώτο συνημμένο και την διαδικασία με το F_Registry και το μητρώο κάτι δεν έχω καταλάβει:

Α. Ρίξε μια ματιά στη φόρμα F_Generator.
Αφού σου εμφανίζει τον κωδικό προϊόντος στη φόρμα σου τον βάζεις στη θέση της φόρμας F_Generator.και κατασκευάζεις αυτόματα τις τιμές που θα αποθηκευτούν στο Μητρώο.


Όπως έχω δει, δεν εμφανίζει κωδικό προϊόντος εκτός και εάν εσύ βάλεις κάτι. Έτσι είναι ή κάτι άλλο? Δοκίμασα φυσικά να βάλω κάτι δικό μου και μου δίνει όντως ένα Registry Code.

Β] Εάν πληκτρολογήσεις στην έναρξη το [regedit]
Όταν λες να πληκτρολογήσω στην έναρξη το [regedit]?? Πού δηλαδή? Στην φόρμα Login εννοείς μήπως"

Γ] θα σε πάει στο μητρώο εκεί θα δεις HKEY_CURRENT_USER--->HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Εκεί αποθηκεύονται οι τιμές των προγραμμάτων .
Πχ στη φόρμα frmwelcom(δεν την έχω συνδέσει) στο κώδικα θα δεις

Όταν λες φίλε "να δω στο μητρώο?

Όταν έχεις χρόνο φίλε αν μπορείς πες μου για τα πιο πάνω αν θέλεις.

Φιλικά,

Γιώργος

alex 14-01-14 11:01

Γιώργο!!
Η φόρμα F_Generator είναι κάτι ξεχωριστό το λεγόμενο Unlock σε καμμιά περίπτωση δεν πρέπει να υπάρχει στην ίδια βάση.Είναι όμως ημιτελής η βάση σου με το unlock.Η βάση σου κάνει επαλήθευση κωδικού από πίνακα και η F_Generator κατασκευάζει όλα αυτά που κάνει σύμφωνα με τον κωδικό προιόντος που τον στέλνεις με email στον πωλητή το βάζει στην F_Generator και κατασκευάζει την έκδοση την ημερομηνία και τον αλγόριθμο registration code σύμφωνα με τον κωδικό προιόντος.

Για να τα δείς αυτά σε παράδειγμα σου έβαλα την φόρμα frmwelcom που δεν έχει σχέσει με την βάση σου ,που μπορεί να συνδεθεί όμως.
Πως θα το δείς τι κάνει;

θα πάς στα windows 7 που έχεις στη μπάρα κάτω εργασιών και στο κουμπί έναρξη και θα βάλεις στην αναζήτηση το [regedit]
θα σε πάει στο μητρώο εκεί θα δεις HKEY_CURRENT_USER--->HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Εκεί αποθηκεύονται οι τιμές των προγραμμάτων .

Για να τα δείς ενημερωτικά πως δουλεύουν και που βρίσκονται.
Γιαυτό σου τα έγραψα.
Ότι καινούργιο κάνω θα τα ξανα πούμε.
γιατί έχω και εγώ μια βάση που δουλεύω κάτι διαφορετικό από το δικό σου.
Σε brakes βλέπω και το φορούμ .

Υ/Γ είναι καλύτερα να μην τα βγάζει τα μηνύματα πιστεύω. Έτσι μπορείς να την χρησιμοποιήσεις την βάση σαν DEMO και σαν κανονικό.Γιατί από τον κωδικό που σου έβαλα να ανοίγει το κουμπί Admin αν θέλεις να την δώσεις την βάση του βάζεις για 10000 μέρες και ζήσε Μάιε να φας τριφύλλι

γιώργοςΚ 14-01-14 11:15

Αλέξανδρε τα είδα φίλε αλλά έχω αρκετές ερωτήσεις. Όταν θα έχεις χρόνο θα τα πούμε.

Νάσαι καλά και σε ευχαριστώ πολύ


Η ώρα είναι 14:32.

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


Search Engine Optimization by vBSEO 3.3.2