![]() |
Εργασία με ημερομηνίες στην Access 1 Συνημμένο(α) Παιδιά γεια σας. Θέλω και πάλι την πολύτιμη βοήθεια σας. Έχω πχ την παρακάτω που καταχωρώ τον εργαζόμενο και την ημερομηνία εργασίας του. Θέλω αν είναι εύκολο να με βοηθήσει κάποιος έτσι ώστε αν ο εργαζόμενος έχει ξαναδουλέψει την ιδία μέρα μέσα σε 15 μέρες να μου βγάζει ένα μήνυμα. Πχ στο παράδειγμα μου ο Νικολάου έχει δουλέψει Δευτέρα 2 φορές σε 15 μέρες. Επίσης πως μπορώ τα πεδία όνομα και επώνυμο να τα βάλω αυτόματα σε ένα άλλο πεδίο μαζί Πχ ονοματεπώνυμο |
Καλημέρα... Νίκο, με το που θα γράφεις (είτε θα επιλέγεις) την ημερομηνία θες :
Με εκτίμηση / Νίκος Δ. Υστερολόγιο : Εφόσον δεν επιλέγεις το άτομο από κάποιο listBox ή comboBox τότε αυτό που επιδιώκεις δεν θα τρέχει σωστά. (κάποτε θα γράφεις Νίκος Γεωργίου, κάποτε Νικόλαος Γεωργίου, κάποτε θα θυμάσαι το Γεωργίου αλλά δεν θα έχεις το όνομα, κάποτε..., δηλ αγαπητέ μου αν διαχειριστείς μερικές δεκάδες ονόματα δεν υπάρχει περίπτωση να γράφεις το ίδιο πρόσωπα ΠΑΝΤΑ με το ίδιο τρόπο.... |
1 Συνημμένο(α) Καλησπέρα στην παρέα Νίκο, όπως επισήμανε και ο φίλος Νίκος (Meteora) η βάση σου έχει αδυναμίες στη σχεδίαση. Για να τις περιορίσω έκανα τα εξής: 1. Δημιούργησα ένα πίνακα «ΕΡΓΑΖΟΜΕΝΟΙ», που έχει τα στοιχεία μόνο των εργαζόμενων και έναν μοναδικό κωδικό. 2. Δημιούργησα ένα πίνακα «ΕΡΓΑΣΙΑ», με την ημερομηνία εργασίας κάθε εργαζόμενου, έναν μοναδικό κωδικό της εργασίας και έναν άλλο κωδικό που προσδιορίζει τον εργαζόμενο. Το επώνυμο και το όνομα είναι περιττά και τα διέγραψα. Περιττή είναι και η μέρα της βδομάδας, αφού μπορεί να προσδιοριστεί από την ημερομηνία. Σημειώνω ότι στο παράδειγμα που ανέβασες οι μέρες δεν αντιστοιχούσαν στις ημερομηνίες. 3. Δημιούργησα τη σχέση 1 προς πολλά ανάμεσα στον πίνακα «ΕΡΓΑΖΟΜΕΝΟΙ» και «ΕΡΓΑΣΙΑ». 4. Δημιούργησα μία φόρμα με τα στοιχεία των εργαζόμενων και τις ημερομηνίες εργασίας στην υποφόρμα που περιέχει. Τώρα γι’ αυτά που ζητάς: 1. Όταν συμπληρώσεις την ημερομηνία στην υποφόρμα και μετακινηθείς σε άλλο πλαίσιο κειμένου, εμφανίζεται αυτόματα η μέρα που αντιστοιχεί σ’ αυτήν και ταυτόχρονα γίνεται έλεγχος μήπως ο εργαζόμενος το τελευταίο δεκαπενθήμερο (από την ημερομηνία που συμπληρώθηκε) ξαναδούλεψε, (την ίδια μέρα) για να εμφανιστεί το κατάλληλο μήνυμα: Αυτό γίνεται με τον κώδικα που ακολουθεί και το βοηθητικό ερώτημα «qryCheck». Κώδικας: Private Sub ΗΜΕΡΟΜΗΝΙΑ_ΕΓΑΣΙΑΣ_BeforeUpdate(Cancel As Integer)Κώδικας: SELECT ΕΡΓΑΣΙΑ.ΚΩΔ_ΕΡΓΑΖΟΜΕΝΟΥ, ΕΡΓΑΣΙΑ.[ΗΜΕΡΟΜΗΝΙΑ ΕΓΑΣΙΑΣ]Φιλικά/Γιώργος |
Καλησπέρα και πάλι Βλέποντας την σύνταξη SQL του ερωτήματος διαπίστωσα λάθος στα κριτήρια. Το διόρθωσα και έκανα τις σχετικές αλλαγές και στο αρχικό μηνυμά μου. Φιλικά/Γιώργος |
Καλημέρα στη παρέα και από μένα! Χωρίς να έχω ετοιμάσει κάτι χειροπιαστό... Μήπως θα ήταν καλύτερα να αφαιρούνται από τους διαθέσιμους εργαζόμενους όσοι το τελευταίο δεκαπενθήμερο έχουν δουλέψει την τρέχουσα ημέρα; :032: Δεν θα είναι λίγο σπαστικά τα προειδοποιητικά μηνύματα; Εκτός κι αν ο σκοπός τους είναι απλά ενημερωτικός και να υπάρχει η δυνατότητα επιλογής του εργαζόμενου. ...απλά ιδέες πετάω μήπως και βρεθεί η βέλτιστη λύση...:scratch_one-s_head: Τα λέμε...:sleepy: Γιάννης |
Καλημέρα στην παρέα Γιάννη, τα μηνύματα είναι πράγματι σπαστικά και μάλλον η λύση που προτείνεις είναι πιο βολική για το χρήστη. Η πρόκληση για μένα και η ευχαρίστηση ήταν να βρω έναν τρόπο υλοποίησης του περιορισμού (ο εργαζόμενος να μη δούλεψε ίδια μέρα το τελευταίο δεκαπενθήμερο), που αρχικά μου φαινόταν δύσκολος. Να είσαι καλά και να σε βλέπουμε συχνότερα. Φιλικά/Γιώργος |
1 Συνημμένο(α) Καλησπέρα στην παρέα Στο αρχείο που επισυνάπτεται γίνεται μια προσπάθεια υλοποίησης μιας ιδέας του Γιάννη (nisgia) Συγκεκριμένα στην κεφαλίδα της φόρμας, που εμφανίζει τους εργαζόμενους, προστέθηκε ένα χειριστήριο επιλογής ημερομηνίας και ένα κουμπί για την εφαρμογή ή ακύρωση ενός φίλτρου. Με την εφαρμογή του φίλτρου εμφανίζονται μόνο οι διαθέσιμοι για την επιλεγείσα ημερομηνία εργαζόμενοι (αυτοί που δε δούλεψαν ίδια μέρα το τελευταίο 15/ημερο), ενώ με την ακύρωσή του όλοι. Για τη διαμόρφωση της τιμής του φίλτρου χρησιμοποιείται το βοηθητικό ερώτημα Κώδικας: SELECT DISTINCT ΕΡΓΑΖΟΜΕΝΟΙ.*Κώδικας: Private Sub cmdOpenReport_Click()Φιλικά/Γιώργος |
1 Συνημμένο(α) Καλησπέρα και από μένα! Παράθεση:
"όλο λάδι-λάδι και από τηγανίτα τίποτα", ετοίμασα μια υλοποίηση της ιδέας μου η οποία νομίζω πως προσεγγίζει την ολοκλήρωση που της αξίζει.:worry: Πέρα από τα θέματα που σχετίζονται άμεσα με το ζητούμενο, μέσα από το παράδειγμα παρουσιάζονται και αρκετά άλλα ενδιαφέροντα πράγματα άλλα ως "tips and trics" και άλλα ως θέματα προς περαιτέρω ανάλυση και βελτίωση. Ένα από αυτά, το οποίο με ταλαιπωρεί συνεχώς και ακόμη μέχρι τώρα δεν έχω βρει μια αποδεκτή λύση είναι η χρήση σύνθετων πλαισίων (comboboxes) πολλαπλών στηλών σε προβολή φύλλου δεδομένων (Datasheet) η λίστα των οποίων πρέπει να ανανεώνεται κατά το χρόνο εκτέλεσης. Όσοι το έχετε επιχειρήσει, πιθανώς θα έχετε αντιμετωπίσει το πρόβλημα της εξαφάνισης ή της λανθασμένης εμφανιζόμενης τιμής τους μετά από κάθε ανανέωση της προέλευσης εγγραφών τους. Για να το αντιμετωπίσω στο παράδειγμα που επισυνάπτω, αναγκάστηκα να παρακάμψω τους κανόνες περί μοναδικότητας δεδομένων και πρόσθεσα δυο άσχετες στήλες στον πίνακα συνένωσης εργαζομένων και εργασιών έτσι ώστε η στήλη των τιμών που εμφανίζεται στα αντίστοιχα σύνθετα πλαίσια να είναι και η δεσμευμένη στήλη τους, ενώ η αποθήκευση της πραγματικής τιμής τους (κρυφή στήλη) γίνεται μέσω κώδικα στο συμβάν AfterUpdate των σύνθετων πλαισίων. Με αυτόν λοιπόν τον μπακαλίστικο τρόπο επιτυγχάνω για την ώρα τη σταθερότητα στη λειτουργία των σύνθετων πλαισίων. Είναι ένα θέμα που πιστεύω πως αξίζει να συζητηθεί και με παίδεψε αρκετά ενώ ο περιορισμός των διαθέσιμων εργαζομένων και εργασιών ήταν σχετικά εύκολος στην υλοποίησή του. Για να μην κουράσω όμως άλλο με το μπλα-μπλα, εξετάστε αν θέλετε το παράδειγμα και θέστε τα σχόλια και τις ερωτήσεις σας έτσι ώστε να ανάψει και λίγο η κουβέντα.:evil: Άλλωστε, όπως λένε και οι Κινέζοι: Μια εφαρμογή = χιλιάδες megabytes...! :001_tongue: Θα χαρώ πολύ να σας ακούσω/διαβάσω.:dft009: Καλό ξημέρωμα! Γιάννης |
1 Συνημμένο(α) Καλησπέρα σε όλους! Πριν αρχίσετε τη γκρίνια και τα παράπονα :cheesy:, επισυνάπτω και την αναβαθμισμένη έκδοση της Employments.mdb στην οποία προστέθηκαν κάποιες νέες λειτουργίες (όπως επιλογή της επιθυμητής εβδομάδας στο εβδομαδιαίο πρόγραμμα εργασιών) και βελτιώθηκαν κάποιες παλιές. Νομίζω πως εκτός των σχετικών εκθέσεων, αυτό που μένει πλέον είναι η δημιουργία μιας αυτόματης διαδικασίας δημιουργίας του εβδομαδιαίου προγράμματος εργασιών βάσει κανόνων.:icon_idea: Τότε φίλε Γιώργο (kapetang), φαντάζομαι πως θα μπορούμε άνετα να την αποκαλέσουμε ολοκληρωμένη προσέγγιση, δεν νομίζεις; :003: Καλό απόγευμα! Γιάννης Υ.Γ. Αν αναρωτηθείτε που βρίσκω τα εικονίδια του παραδείγματος, τα κατεβάζω (δωρεάν) από εδω. Τώρα κατά πόσο έχω το δικαίωμα να τα χρησιμοποιώ στο επίπεδο που τα χρησιμοποιώ ...είναι άλλο θέμα.:022: |
Καλησπέρα σε όλους Φίλε μου Γιάννη, στην εφαρμογή σου επεκτείνοντας το αρχικό ζητούμενο ασχολείσαι με τον προγραμματισμό της υπηρεσίας σε μια στρατιωτική μονάδα. Το θέμα αυτό, όπως και κάθε εφαρμογή διαχείρισης προσωπικού και ανάθεσης εργασίας είναι κατά τη γνώμη μου από τα πολυπλοκότερα. Στην περίπτωσή μας εμπλέκονται αρκετά στοιχεία. Τελείως πρόχειρα σημειώνω τα ακόλουθα: 1. Διάρκεια της βάρδιας, το πλήθος των σκοπιών , των θαλάμων και των περιπόλων, η σύνθεση των περιπόλων, κλπ (ημερήσιες ανάγκες σε προσωπικό). 2. Αντικατάσταση σε περίπτωση κωλύματος (πχ ασθένειας). 3. Ενίσχυση υπηρεσίας σε περίπτωση έκτακτων μέτρων ασφάλειας. 4. Δυνατότητα πολλαπλής βάρδιας. 5. Υπάρχον προσωπικό. 6. Διάστημα προγραμματισμού (βδομάδα, 15/ήμερο, κλπ). 7. Κάποιοι περιορισμοί για τη συχνότητα και το είδος της υπηρεσίας για να μη πήξουν οι νέοι. Στην πληροφορική ο κανόνας είναι η διόρθωση και η αναβάθμιση των εφαρμογών. Έτσι είναι στις αρχές μου να μη θεωρώ καμία εφαρμογή ολοκληρωμένη και πάντα περιμένω το καλύτερο :worry:. Η εφαρμογή σου όμως είναι πολύ καλή, έχει ιδέες, ομορφιά και χιούμορ. Γιώργος ΥΓ Και μια απορία: στο ερώτημα qryweekScedule χρησιμοποιείται σύνδεσμος LEFT JOIN και μία συνθήκη (not is null) δε θα μπορούσε να χρησιμοποιηθεί INNER JOIN χωρίς τη συνθήκη; |
Καλησπέρα στη παρέα! Η αριστερή συνένωση (LEFT JOIN) και η συνθήκη "Not is Null" στο ερώτημα που αναφέρεις Γιώργο είναι απομεινάρια της προσπάθειάς μου να εμφανίσω όλες τις ημέρες της τρέχουσας εβδομάδας στη γραμμή κεφαλίδων. Όμως στη συνέχεια είδα πως δεν ταξινομούνται με βάση την ημερομηνία αλλά το όνομα της ημέρας. Έτσι λοιπόν "υποχρέωσα" το ερώτημα να επιστρέψει τα ονόματα των ημερών με τη σωστή σειρά θέτοντάς τα στο πεδίο επικεφαλίδων στηλών (Column Headings) του φύλλου ιδιοτήτων του ερωτήματος. Όταν όμως επετεύχθη το ζητούμενο δεν γύρισα πίσω να δω αν δουλεύει και με την απλή εσωτερική ένωση όπως πολύ σωστά παρατήρησες. Όσον αφορά τα υπόλοιπα όμως που απαρίθμησες, δεν είχα ποτέ τη φιλοδοξία με αυτό το παράδειγμα να καλύψω τις ανάγκες διαχείρισης κάποιας στρατιωτικής βάσης. Νομίζω πως θα πρέπει να ρίξεις λίγο το επίπεδο των απαιτήσεών σου απέναντί μου. :shifty: Το επίκεντρο του παραδείγματος ήταν ο τρόπος απόκρυψης όσων έχουν εργαστεί την τρέχουσα ημέρα και η επέκταση σε αυτό ήταν η κυκλική επιλογή εργασίας για το τρέχον άτομο. Αυτό εννοούσα με το "ολοκληρωμένη προσέγγιση" και όχι κάποια εφαρμογή έτοιμη προς διανομή. :thumbs-up: Οι στρατιωτικές υπηρεσίες ήταν απλά ένα χαριτωμένο αντικείμενο στο οποίοι σκέφτηκα να "πατήσω" την προφανώς ελάχιστη λειτουργικότητα του παραδείγματος ώστε να έχει κάποιο νόημα. :what: Παρόλα αυτά, κατά τη γνώμη μου, ως παράδειγμα έχει μεγάλες δυνατότητες επέκτασης αν κάποιος το θελήσει, και σε πολυπλοκότητα αλλά και σε λειτουργικότητα. Χαίρομαι όμως πραγματικά που σου άρεσε και που ασχολήθηκες μαζί του.:thanks: Και τέλος, αν θέλεις την προσωπική μου άποψη, συμφωνώ απόλυτα στο ότι καμία εφαρμογή δεν θεωρείται ολοκληρωμένη, ειδικά όσες προσπαθούν να συμπεριλάβουν τον ανθρώπινο παράγοντα. Ίσως οι εφαρμογές των κβαντικών υπολογιστών να τα καταφέρουν όμως για την ώρα, με τα τρανζιστοράκια, δεν υπάρχει περίπτωση. Είναι θέμα ασυμβατότητας...! :what: Επίσης η ιδεολογία μου λέει πως, όροι όπως "διαχείριση προσωπικού" και "ανάθεση εργασιών", δεν αφορούν την ανθρώπινη φύση. :noexpression: Φιλικά, Γιάννης |
Παράθεση:
Οι όροι "διαχείριση προσωπικού" και "ανάθεση εργασιών" δεν αρέσουν και σε μένα. Μερικές φορές όμως αναρωτιέμαι, σε μία χώρα που οι περισσότεροι αντιπαθούν τη δουλειά τους, μήπως θα έπρεπε να είναι περισσότερο αποδεκτοί; Γιώργος |
| Η ώρα είναι 18:26. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.