Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Κώδικας για να λειτουργεί η Βάση για συγκεκριμένες μέρες
Όπως περιγράφω και στο θέμα θέλω η βάση να λειτουργεί (ανοίγει) για συγκεκριμένο αριθμό ημερών... Φτιάχνω λοιπόν ένα πίνακα "tbldays" με πεδίο "firstdate". Πρέπει λοιπόν στο άνοιγμα της βάσης να γίνεται ένας έλεγχος αν το πεδίο firstdate είναι null και αν είναι να πάρει τιμή date() (πρώτη εκτέλεση της βάσης), αν δεν είναι null να γίνεται μια σύγκριση με το Now() και αν η διαφορά τους είναι μεγαλύτερη από χ ημέρες να βγάζει ένα σχετικό msgbox και να μην ανοίγει η βάση, ενώ αν είναι μικρότερη να προχωρά κανονικά το άνοιγμα της βάσης.. Φτιάγνω λοιπόν την παρακάτω συνάρτηση Κώδικας: Public Function fTrialDays() Dim StartDay As Date 'Ελέγχει τον πίνακα If IsNull(DMax("[firstdate]", "tbldays")) Then DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO tbldays VALUES ( Now())" DoCmd.SetWarnings True Exit Function Else StartDay = DMax("[firstdate]", "tbldays") End If 'Ελεγχος για χ=15 μέρες If Now() > DateAdd("d", 15, StartDay) Then 'Σχετικό μήνυμα και κλείσιμο της access MsgBox "Οι x μέρες πέρασαν.", , "Info.." DoCmd.Quit else DoCmd.openForm "frmMain" End If End Function Η όλη ιστορία γίνεται στο "πριν τη φόρτωση" μιας φόρμας logon που είναι και η εκκίνηση της βάσης.. Επίσης τώρα σκέφτομαι ότι θα ήταν καλύτερο να γίνεται στο "κλείσιμο" της φόρμας logon ελέγχοντας και αν ο χρήστης είναι απλός ή admin (έχω στον tblusers πεδίο Ναι/Οχι που το Ναι δείχνει τον admin user kai το Οχι τον απλο user) και αν είναι απλός να τσεκάρονται οι μέρες, αλλιώς ο admin να περνάει ελεύθερα... Θα ήθελε κάποιος να μου κάνει πράξη (συμπληρώσει) στον κώδικα τα παραπάνω? Επιπλέον αν υπάρχει και κάποιο άλλο σκεφτικό που να κάνει αυτό που θέλω δε θα είχα αντίρρηση.. ) Ευχαριστώ |
#2
| |||
| |||
Re: Κώδικας για να λειτουργεί η Βάση για συγκεκριμένες μέρες
Καλημέρα, Λοιπόν να αναφέρω μία εισαγωγή στον κώδικα σου εφόσον προστεθεί στον πίνακα TblDays και ένα πεδίο Boolean που θα ονομάζεται Locked με Default τιμή = False. Τώρα γίνεται έλεγχος αν είναι False ώστε να τρέξει ο κώδικας. Μόλις η τρέχουσα ημερομηνία είναι πλέον των 15 ημερών τότε έχουμε Locked=True επομένως και κλειδώνει και την επόμενη φορά που ξανακαλέσουμε τον κώδικα δεν γίνεται έλεγχος για πλέον των 15 ημερών απλά βγάζει το μήνυμα κλεισίματος καθότι το Locked είναι True. Κώδικας: if Dlookup("Locked","Tbldays")=false then 'Ελεγχος για χ=15 μέρες If Now() > DateAdd("d", 15, StartDay) Then Docmd.RunSql("UPDATE TblDays SET Locked=true") 'Σχετικό μήνυμα και κλείσιμο της access MsgBox "Οι x μέρες πέρασαν.", , "Info.." end if else 'Σχετικό μήνυμα και κλείσιμο της access MsgBox "Οι x μέρες πέρασαν.", , "Info.." end if iliadisk / kon73 |
#3
| |||
| |||
Re: Κώδικας για να λειτουργεί η Βάση για συγκεκριμένες μέρες
Ευχαριστώ πάρα πολύ για την άμεση και λειτουργική απάντηση... Παραθέτω τον κώδικα όπως τελικά διαμορφώθηκε, για κάθε χρήση... Μήπως υπάρχει και κάποια σκέψη που να μπει ένα ακόμα if (ίσως με Dlookup στον tblUsers πεδίο UserName ?) που να παρακάμπτει τελείως τον έλεγχο ημερών για τον χρήστη "admin"? Κώδικας: Public Function fTrailTest() Dim dStartDay As Date 'Ελέγχει τον πίνακα If IsNull(DMax("[FirstDate]", "tblDays")) Then DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO tblDays VALUES ( Now(),False)" DoCmd.SetWarnings True Exit Function Else dStartDay = DMax("[FirstDate]", "tblDays") End If ' Έλεγχος run Code If DLookup("Locked", "tblDays") = False Then ''Ελεγχος για χ=15 μέρες If Now() > DateAdd("d", 15, dStartDay) Then DoCmd.SetWarnings False DoCmd.RunSQL ("UPDATE tblDays SET Locked=true") DoCmd.SetWarnings True 'Σχετικό μήνυμα και κλείσιμο της access MsgBox " Οι x μέρες πέρασαν.", , "Info.." DoCmd.Quit End If 'Σχετικό μήνυμα MsgBox "Έχεις ακόμα μέρες.", , "Info.." DoCmd.OpenForm "frmLalala", acNormal Else MsgBox " Οι x μέρες πέρασαν.", , "Info.." DoCmd.Quit End If End Function Thanks |
#4
| |||
| |||
Re: Κώδικας για να λειτουργεί η Βάση για συγκεκριμένες μέρες
Καλημέρα, Μπορείς να βάλεις στον πίνακα users ένα ακόμα πεδίο boolean το οποίο να ονομάζεται BlnTrialPass και να ελέγχει με Dlookup αν είναι true τότε να επιτρέπεται στον χρήστη αυτόν να ανοίγει την βάση ακόμα και αν έχει περάσει η δοκιμαστική περίοδο των 30 ημερών. Αυτό το if BlnTrialPass=false θα είναι το πρώτο και στην αρχή του κώδικά σου και το end if θα κλείνει στο τέλος του κώδικά σου. Φιλικά iliadisk / kon73 |
#5
| |||
| |||
Re: Κώδικας για να λειτουργεί η Βάση για συγκεκριμένες μέρες
Ευχαριστώ για όλα... (Το έκανα το BlnTrialPass με μια άλλη ψευδοφορμα και όλα ΟΚ...) |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Πίνακες ] Αντιγραφή πινάκων από τρέχουσα βάση σε νέα βάση | apostolos | Access - Ερωτήσεις / Απαντήσεις | 11 | 04-03-16 22:43 |
[Μορφοποίηση] Χρωματισμός κελιών βάσει κειμένου κελιού αναφοράς.Λειτουργεί εκτός μιας λεπτομέρειας | Skakinen | Excel - Ερωτήσεις / Απαντήσεις | 2 | 10-11-15 00:03 |
[Γενικά] Υπολογισμός Ημερομισθιων σε συγκεκριμένες ημέρες | Dolenhil | Excel - Ερωτήσεις / Απαντήσεις | 13 | 14-03-15 11:59 |
[Συναρτήσεις] Ανάλυση ημερών σε μήνες και μέρες | thanosgr | Excel - Ερωτήσεις / Απαντήσεις | 2 | 11-03-14 11:31 |
Απορία σχετικά με το πως βάζω όριο στις μέρες ενοικίασης | Vansel | Access - Ερωτήσεις / Απαντήσεις | 19 | 02-06-12 13:10 |
Η ώρα είναι 21:34.