Καλησπέρα
Σταύρο, προκειμένου να απαντήσω στα ερωτήματά σου, προτίμησα να δημιουργήσω μία νέα βάση, αντί να εργαστώ σ’ αυτήν που ανέβασες.
Το έκανα για τους παρακάτω λόγους:
1) Παρατήρησα κάποιες αδυναμίες στο σχεδιασμό.
Για παράδειγμα στον πίνακα [AdiesDikeomaP] ορίζεις τα πεδία [ID_dikeomaadiasP], [kod_prosopiko_dikeomaadiasP], και [kod_idosadias_dikeomaadiasP] ως σύνθετο πρωτεύον κλειδί μολονότι το πεδίο [ID_dikeomaadiasP] είναι αυτόματης αρίθμησης (παίρνει μοναδικές τιμές).
Υπάρχουν στοιχεία που αποθηκεύονται σε πολλούς πίνακες, όπως το είδος και η τιμή του είδους των αδειών.
Ο σχεδιασμός δεν αποτρέπει κάποια λάθη, όπως την καταχώρηση αδειών χωρίς να υπάρχει αντίστοιχο δικαίωμα.
2) Ενώ βρίσκεσαι στο στάδιο ανάπτυξης της εφαρμογής οι φόρμες όταν ανοίγουν καταλαμβάνουν όλη την οθόνη και δυσχεραίνουν τον έλεγχο και την προσθήκη νέων στοιχείων.
Σε μια πρώτη προσέγγιση (δε γνωρίζω το είδος των αδειών και τις ιδιαιτερότητές τους) η βάση δεδομένων πρέπει να έχει:
1) Ένα πίνακα για την καταχώρηση των στοιχείων του προσωπικού (πχ Prosopiko_p με πρωτεύον κλειδί ID_prosopiko_p).
2) Ένα πίνακα για την καταχώρηση των τύπων των αδειών (πχ IdosAdiasP με πρωτεύον κλειδί το πεδίο ID_Idos).
3) Ένα πίνακα για την καταχώρηση των δικαιούμενων αδειών κάθε εργαζόμενου (πχ DikeomaAdiesP).
Εδώ πρέπει να υπάρχουν τα πεδία:
- Ένα για την καταχώρηση του κωδικού του εργαζόμενου (ξένο κλειδί) πχ ID_prosopiko_D.
- Ένα για την καταχώρηση του κωδικού του είδους της άδειας (ξένο κλειδί) πχ ID_Idos.
- Ένα για την καταχώρηση του έτους πχ Etos_D.
Ο συνδυασμός αυτών των πεδίων παίρνει μοναδικές τιμές, γι’ αυτό ορίζεται ως πρωτεύον κλειδί.
Έτσι η ίδια η access δεν επιτρέπει να έχουμε για το ίδιο έτος, εργαζόμενο και είδος άδειας, πολλές καταχωρήσεις (εγγραφές).
- Σκέφτηκα επίσης ότι εδώ πρέπει να υπάρχει ένα πεδίο για την καταχώρηση της ημερομηνίας λήξης του δικαιώματος πχ EndAdias.
Μια κανονική άδεια δεν μπορεί να μεταφέρεται επ’ άπειρο.
Νομίζω ότι πρέπει να ληφθεί μέχρι τέλους Μαρτίου του επόμενου έτους. Διαφορετικά χάνεται ή πληρώνεται.
Αν επιτρέπονται μεταφορές, χωρίς όρια, μπορούμε να βάλουμε στο πεδίο αυτό μια μεγάλη τιμή πχ 31/12/9990.
4) Ένας πίνακας για την καταχώρηση των αδειών, που παίρνει το προσωπικό πχ AdiesP.
Αυτός πρέπει να έχει:
- Ένα πεδίο με μοναδικές τιμές για πρωτεύον κλειδί, πχ IDAdiesP
- Ένα πεδίο για την καταχώρηση του κωδικού του εργαζόμενου (ξένο κλειδί), πχ KodAdiesP.
- Ένα πεδίο για την καταχώρηση του κωδικού της άδειας (ξένο κλειδί) πχ IdosAdiesP.
- Ένα πεδίο για την καταχώρηση του έτους (ξένο κλειδί) πχ EtosAdiesP.
Τα 3 παραπάνω πεδία συνδέουν τον πίνακα με τον πίνακα των δικαιωμάτων DikeomaAdiesP.
- Τα πεδία για την καταχώρηση του διαστήματος της άδειας πχ ApoAdiesP και EosAdiesP.
Ανάμεσα στους παραπάνω πίνακες υπάρχουν σχέσεις, που, για την αποτροπή σφαλμάτων, θα πρέπει να οριστούν.
- Ο πίνακας Prosopiko_p έχει μια σχέση 1 προς πολλά με τον DikeomaAdiesP.
- Ο πίνακας IdosAdiasP έχει μια σχέση 1 προς πολλά με τον DikeomaAdiesP.
- Ο πίνακας DikeomaAdiesP έχει μια σχέση 1 προς πολλά με τον AdiesP
Λόγω των παραπάνω σχέσεων ο ασφαλέστερος και ευκολότερος τρόπος καταχώρησης και εμφάνισης δεδομένων είναι οι σύνθετες (κύρια, υποφόρμα) φόρμες.
Η φόρμα ProsopikoF βοηθάει στην καταχώρηση των δικαιούμενων αδειών και αποτρέπει την καταχώρηση δικαιωμάτων για μη υπάρχοντες εργαζόμενους και μη υπάρχοντα είδη αδειών.
Η φόρμα DikeomaAdiesF βοηθάει στην καταχώρηση των αδειών κάθε εργαζόμενου σε αντιστοιχία με τις δικαιούμενες απ’ αυτόν άδειες.
Η κύρια φόρμα έχει ένα πλαίσιο κειμένου txtYpoloipo, που με τη βοήθεια του ερωτήματος YpolipoAdionQ δείχνει το υπόλοιπο της άδειας για κάθε δικαίωμα (συνδυασμό εργαζόμενου, έτους, είδους άδειας).
Η ίδια η access δεν επιτρέπει καταχώρηση, αν δεν υπάρχει αντίστοιχο δικαίωμα.
Επίσης με κατάλληλο κώδικα, που υπάρχει στη δευτερεύουσα φόρμα και τα ερωτήματα CheckYpolipoAdionQ και AdiesTomiMeDiastima_Qr αποτρέπεται η καταχώρηση:
1) Αδειών που η χρονική διάρκειά τους είναι και εκτός της λήξης του δικαιώματος.
2) Αδειών που η διάρκειά τους είναι μεγαλύτερη από το υπόλοιπο.
3) Αδειών για τον ίδιο εργαζόμενο που τα διαστήματά τους τέμνονται.
Σταύρο ελπίζω να μη έγινα φλύαρος και να βοήθησα στο σωστό στήσιμο της βάσης σου.
Φιλικά/Γιώργος