![]() |
Υπολογισμός ημερών μιας περιόδου ανά μήνα 1 Συνημμένο(α) Γεια σας Λοιπόν ως νέος χρήστης βλέπω φανταστική δουλειά στο forum..Μπράβο σε όλους Ήδη άρχισα να κατανοώ πολλά που δεν ήξερα και μαθαίνω ακόμη περισσότερα. Τα βάσανά μου ξεκινούν σε μια βάση που κάνω για ασθενείς εντατικής Εν ολίγοις το πιο εύκολο που φανταζόμουν κατάντησε πονοκέφαλος βδομάδων. Έχοντας δύο πεδία ("Admission Date" και "Discharge Date" (πίνακας Patients List) προσπαθώ να αποδώσω με ερώτημα προσάρτησης (qryLOS per Month) τις ημέρες των ασθενών ανα ημερολογιακό μήνα σε πίνακα (LOS per Month) για περαιτέρω στατιστικές αναλύσεις και reports. Δυστυχώς μετά την κατασκευή του σχετικού report (κουμπί "View Summary Reports" στην οθόνη εκκίνησης της βάσης) ανακάλυψα οτι τα δεδομένα βγαίνουν λάθος. Θα έπρεπε στο στήλη SUM LOS (Lenth Of Stay)=Διάρκεια νοσηλείας οι ημέρες να αθροίζονται ανά μήνα και όχι ανά ασθενή που είχε εκείνο το μήνα εισαγωγή! Με λίγα λόγια το ερώτημα είναι πως για κάθε εγγραφή στην οποία υπάρχει ημερομηνία start και end βρίσκουμε τις ημέρες ανά μήνα; Παρότι βρήκα πολλά σχετικά στο παρόν forum (αλλά και σε άλλα ξένα) δεν κατόρθωσα να τα ενσωματώσω στη βάση (καθότι σχετικά αρχάριος) Μπορεί κάποιος να βοηθήσει; Η βάση είναι μια τροποποίηση τoυ προτύπου students.accdb (2007) (Τα ονόματα και τα δεδομένα στη βάση είναι τυχαία και υποθετικά). |
1 Συνημμένο(α) Καλησπέρα Δημήτρη, καλωσόρισες στην παρέα του φόρουμ. Στην επισυναπτόμενη ΒΔ , θα βρεις μια πρόταση για το ζητούμενο. Συγκεκριμένα έχω προσθέσει στη ΒΔ που ανέβασες: 1) Τη φόρμα frmPatiensPerMonth, στην οποία όταν πιέσουμε το μοναδικό κουμπί της, τρέχει ο παρακάτω κώδικας. Κώδικας: Option Compare DatabaseΔηλαδή χωρίζει το διάστημα [PatientIn, PatientOut] σε ένα ή περισσότερα διαστήματα [D1, D2] ανήκοντα στον ίδιο μήνα. Οι εγγραφές μία ή περισσότερες, που προκύπτουν, αποθηκεύονται στον πίνακα PatientsPerMonth. 2) Τον πίνακα PatientsPerMonths που περιέχει το ID της νοσηλείας και τα διαστήματα [Apo, Eos] στα οποία χωρίστηκε το διάστημα νοσηλείας, όταν κατανεμήθηκε σε μήνες. Στηριζόμενοι στον πίνακα, με κατάλληλο ερώτημα, μπορούμε να πάρουμε και τα υπολογιζόμενα πεδία: Etos: year(Apo), Minas:Month(Apo), MeresPerMonth: Eos-Apo+1,κλπ. Έχω τη γνώμη ότι πρέπει να ξαναδείς τη σχεδίαση της ΒΔ. Ένας ασθενής (Patient) μπορεί να νοσηλευτεί πολλές φορές. Συνεπώς θα έπρεπε να υπάρχει: 1) Ένας πίνακας (πχ Patients) με τα ατομικά στοιχεία του ασθενούς (πχ Patient_ID, LastName, FirstName, κλπ). 2) Ένας πίνακας (πχ Nosilies) με τα στοιχεία νοσηλείας (πχ Nosilias_ID, Patient_ID, PatientIn, PatientOut, κλπ). Φιλικά/Γιώργος |
Γιώργο Δούλεψε θαυμάσια. Σ' ευχαριστώ πάρα πολύ. Χρωστάω πολλά. (Τελικά χωρίς VBA δεν μπορείς να κάνεις ούτε βήμα παραπάνω στην Access). Τη σημείωση για τη σχεδίαση την έχω υπόψη μου - τη δουλεύω τώρα. 'Α και κάτι ακόμη..Οκ στο ερώτημα που έκανα όταν ζητάω γράφημα πχ. για ένα έτος μου βγάζει αθροίσματα των 12 μηνών ξεχωριστά. Όταν όμως ζητάω γράφημα πχ για 2 ή περισσότερα έτη μου βγάζει τους 12 μήνες των αντίστοιχων ετών αθροιστικά. Πως πρέπει να συνδυάσω το έτος με το μήνα στο ερώτημα ώστε να μου βγάζει όλους τους μήνες του κάθε έτους σε ένα γράφημα με χρονική συνέχεια; Και πάλι ευχαριστώ (νομίζω οτι θα γίνω φανατικός του forum - αρκεί να μπορώ κι εγώ να προσφέρω κάτι) Δημήτρης |
1 Συνημμένο(α) Καλημέρα Δημήτρη, στην επισυναπτόμενη ΒΔ έχω προσθέσει το ερώτημα qrySumLOSPerMonth και τη φόρμα frmSumLOSPerMonth με προεπιλεγμένη προβολή το συγκεντρωτικό γράφημα. Η φόρμα βασίζεται στο ερώτημα qryLOS. Πιστεύω ότι είναι αυτό που ζητάς Φιλικά/Γιώργος |
Γιώργο Αυτό ήταν. Νάσαι καλά. Με κάποιες μικρές τροποποιήσεις θα γίνει αυτό ακριβώς που φανταζόμουν. Ευχαριστώ και πάλι. Δημήτρης |
| Η ώρα είναι 05:44. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.