| 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
| |||
| |||
|
Καλημέρα, Λοιπόν να αναφέρω μία εισαγωγή στον κώδικα σου εφόσον προστεθεί στον πίνακα 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
| |||
| |||
|
Ευχαριστώ πάρα πολύ για την άμεση και λειτουργική απάντηση... Παραθέτω τον κώδικα όπως τελικά διαμορφώθηκε, για κάθε χρήση... Μήπως υπάρχει και κάποια σκέψη που να μπει ένα ακόμα 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
| |||
| |||
|
Καλημέρα, Μπορείς να βάλεις στον πίνακα users ένα ακόμα πεδίο boolean το οποίο να ονομάζεται BlnTrialPass και να ελέγχει με Dlookup αν είναι true τότε να επιτρέπεται στον χρήστη αυτόν να ανοίγει την βάση ακόμα και αν έχει περάσει η δοκιμαστική περίοδο των 30 ημερών. Αυτό το if BlnTrialPass=false θα είναι το πρώτο και στην αρχή του κώδικά σου και το end if θα κλείνει στο τέλος του κώδικά σου. Φιλικά iliadisk / kon73 |
|
#5
| |||
| |||
|
Ευχαριστώ για όλα... (Το έκανα το BlnTrialPass με μια άλλη ψευδοφορμα και όλα ΟΚ...) |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [ Πίνακες ] Αντιγραφή πινάκων από τρέχουσα βάση σε νέα βάση | apostolos | Access - Ερωτήσεις / Απαντήσεις | 11 | 04-03-16 21:43 |
| [Μορφοποίηση] Χρωματισμός κελιών βάσει κειμένου κελιού αναφοράς.Λειτουργεί εκτός μιας λεπτομέρειας | Skakinen | Excel - Ερωτήσεις / Απαντήσεις | 2 | 09-11-15 23:03 |
| [Γενικά] Υπολογισμός Ημερομισθιων σε συγκεκριμένες ημέρες | Dolenhil | Excel - Ερωτήσεις / Απαντήσεις | 13 | 14-03-15 10:59 |
| [Συναρτήσεις] Ανάλυση ημερών σε μήνες και μέρες | thanosgr | Excel - Ερωτήσεις / Απαντήσεις | 2 | 11-03-14 10:31 |
| Απορία σχετικά με το πως βάζω όριο στις μέρες ενοικίασης | Vansel | Access - Ερωτήσεις / Απαντήσεις | 19 | 02-06-12 12:10 |
Η ώρα είναι 11:23.


Αλλαγή σε γραμμικό τρόπο

