Καλησπέρα στην παρέα
Στο αρχείο που επισυνάπτεται γίνεται μια προσπάθεια υλοποίησης
μιας ιδέας του Γιάννη (nisgia)
Συγκεκριμένα στην κεφαλίδα της φόρμας, που εμφανίζει τους εργαζόμενους, προστέθηκε ένα χειριστήριο επιλογής ημερομηνίας και ένα κουμπί για την εφαρμογή ή ακύρωση ενός φίλτρου.
Με την εφαρμογή του φίλτρου εμφανίζονται μόνο οι διαθέσιμοι για την επιλεγείσα ημερομηνία εργαζόμενοι (αυτοί που δε δούλεψαν ίδια μέρα το τελευταίο 15/ημερο), ενώ με την ακύρωσή του όλοι.
Για τη διαμόρφωση της τιμής του φίλτρου χρησιμοποιείται το βοηθητικό ερώτημα
Κώδικας:
SELECT DISTINCT ΕΡΓΑΖΟΜΕΝΟΙ.*
FROM ΕΡΓΑΖΟΜΕΝΟΙ INNER JOIN ΕΡΓΑΣΙΑ ON ΕΡΓΑΖΟΜΕΝΟΙ.ΚΩΔ_ΕΡΓ=ΕΡΓΑΣΙΑ.ΚΩΔ_ΕΡΓΑΖΟΜΕΝΟΥ
WHERE (((ΕΡΓΑΣΙΑ.[ΗΜΕΡΟΜΗΝΙΑ ΕΓΑΣΙΑΣ]) Between DateAdd("d",-15,Forms!ΕΡΓΑΖΟΜΕΝΟΙ!DTPicker8) And
DateAdd("d",-1,Forms!ΕΡΓΑΖΟΜΕΝΟΙ!DTPicker8)) And
((Format([ΗΜΕΡΟΜΗΝΙΑ ΕΓΑΣΙΑΣ],"dddd"))=Format(Forms!ΕΡΓΑΖΟΜΕΝΟΙ!DTPicker8,"dddd")));
Επίσης για την εφαρμογή και ακύρωση του φίλτρου χρησιμοποιείται ο παρακάτω κώδικας.
Κώδικας:
Private Sub cmdOpenReport_Click()
Me.Filter = "[ΕΡΓΑΖΟΜΕΝΟΙ]![ΚΩΔ_ΕΡΓ] Not In (select [qryFilter]![ΚΩΔ_ΕΡΓ] from [qryFilter])"
Me.FilterOn = Me.cmdOpenReport.Caption = "Εμφάνιση διαθέσιμων"
If Me.FilterOn Then
Me.cmdOpenReport.Caption = "Εμφάνιση όλων"
Else
Me.cmdOpenReport.Caption = "Εμφάνιση διαθέσιμων"
End If
End Sub
Private Sub Form_Load()
Me.Filter = ""
End Sub
Ανεξάρτητα από την εξαφάνιση του NIC, που έθεσε το θέμα, επειδή παρουσιάζει γενικότερο ενδιαφέρον, πιστεύω ότι του αξίζει μια πιο ολοκληρωμένη προσέγγιση.
Φιλικά/Γιώργος