Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Ενημέρωση ορισμένων στηλών (βάρδιες) ενός πίνακα από άλλο (με ημερομηνίες από/έως)
Γειά σας και πάλι... Αφού ευχηθώ καλή χρονιά.. θα ήθελα να μου δώσετε τα φώτα σας (λόγω της ημέρας) σε ένα πρόβλημα κάπως σύνθετο. Έχω έναν πίνακα "Patients" που καταχωρώ ασθενείς, καθώς και ημερομηνία και ώρα εισόδου και εξόδου τους από και προς το τμήμα. Σε έναν άλλο μη συνδεδεμένο πίνακα "PatientNurseRatio" μεταξύ άλλων εισάγω ξανά για κάθε δυνατή ημερομηνία τον συνολικό αριθμό των ασθενών που υπάρχουν σε κάθε βάρδια (00:01 - 07:00 , 07:01 - 15:00 και 15:01 - 00:00) για κάθε ημερομηνία. Υπάρχει τρόπος αυτόματης ενημέρωσης της σχετιζόμενης ημερομηνίας (MonitorDate) και των 3 στηλών του δεύτερου πίνακα (PatientsAtNight, PatientsAtDay, PatientsAtAfternoon) από τον πρώτο με κάποια μέθοδο? Προσπάθησα να κάνω σε ένα ερώτημα άθροιση των υπαρχόντων ασθενών για κάθε βάρδια και σε κάθε ημερομηνία αλλά οι γνώσεις μου σε VBA είναι πολύ περιορισμένες. Για τον υπολογισμό των ασθενών στην κάθε βάρδια ισχύουν: 1.Ασθενής με παραμονή στην βάρδια για χρόνο λιγότερο από μία ώρα δεν υπολογίζεται στην βάρδια αυτή. 2.Ασθενείς, που στην ίδια βάρδια, ο ένας φεύγει και έρχεται νέος (σε χρόνους που δεν τέμνονται) θεωρούνται ως ένας ασθενής στην βάρδια. Μπορεί κάποιος να βοηθήσει?... Ευχαριστώ εκ των προτέρων Φιλικά Δημήτρης... Στέλνω ένα δείγμα της βάσης για καλύτερη κατανόηση |
#2
| |||
| |||
Καλή χρονιά Δημήτρη, δες το συνημμένο. Πατώντας το κουμπί της φόρμας εκτελείται κώδικας που για κάθε εγγραφή του πίνακα PatientNurseRatio: 1) Βρίσκει τα τρία χρονικά διάστημα (Start1(i) έως End1(i), i=1,2,3) στα οποία διαιρούν τη μέρα οι ώρες 7:00 και 15:00. 2) Για κάθε ένα από τα παραπάνω διαστήματα δημιουργεί ένα μετρητή S(1), S(2) και S(3). 3) Διατρέχει όλες τις εγγραφές του πίνακα Patients και βρίσκει τις τομές t1, t2, t3 (κοινό χρονικό διάστημα) των παραπάνω διαστημάτων και του διαστήματος παραμονής του ασθενούς στο τμήμα. 4) Για κάθε τομή t1, t2, t3 με διάρκεια τουλάχιστον μια ώρα, αυξάνει τον αντίστοιχο μετρητή κατά μία μονάδα. 5) Ενημερώνει τα πεδία του πίνακα PatientNurseRatio της συγκεκριμένης εγγραφής. Όπως φαίνεται από την παραπάνω διαδικασία οι μετρητές απαριθμούν τομές διαστημάτων και όχι ασθενείς. Δεν μπορώ συνεπώς να αντιληφθώ, πως συμμετέχει στους υπολογισμούς αυτό που γράφεις: «2.Ασθενείς, που στην ίδια βάρδια, ο ένας φεύγει και έρχεται νέος (σε χρόνους που δεν τέμνονται) θεωρούνται ως ένας ασθενής στην βάρδια». Φιλικά/Γιώργος |
#3
| |||
| |||
Και μια πρόταση για τη βελτίωση της ταχύτητας. Χρησιμοποιείται το ερώτημα qryHLP, αντί του πίνακα Patients. |
#4
| |||
| |||
Γιώργο ευχαριστώ θερμά!! Θα ήθελα σε παρακαλώ πολύ να μου πεις εάν μπορεί να τροποποιηθεί ώστε: 1) στον πίνακα PatientNurseRatio να υπολογίζονται οι τιμές από ΟΛΕΣ τις ημερομηνίες του Patients δηλαδή να ενημερώνεται ο πίνακας PatientNurseRatio και με τις ημερομηνίες που δεν υπάρχουν στον PatientNurseRatio και όχι να τροποποιούνται μόνο οι τιμές αυτών που ήδη υπάρχουν. 2) Υπάρχει η δυνατότητα να τροποποιηθεί η "νύχτα" (PatientsAtNight) ώστε να είναι όχι από 00:00 έως 07:00 αλλά από 23:00-07:00 (δηλαδή από τις 23:00 της προηγούμενης ημερομηνίας μέχρι τις 07:00 της επόμενης; Ευχαριστώ και πάλι για τον κόπο και το χρόνο σου. Δημήτρης |
#5
| |||
| |||
Καλησπέρα Δημήτρη, στο συνημμένο έγιναν σημαντικές αλλαγές: 1) Στον πίνακα Patients υπάρχουν μόνο δύο πεδία ApoTB και EosTB για την καταχώρηση του χρόνου εισόδου (ApoTB= ημερομηνία και ώρα πχ 2/3/2015 10:50) και του χρόνου εξόδου (EosTB= ημερομηνία και ώρα πχ 12/3/2015 23:50). Η αλλαγή αυτή κρίθηκε σκόπιμη για την απλοποίηση του πίνακα και την απλοποίηση και επιτάχυνση των υπολογισμών. 2) Επακόλουθο της αλλαγής είναι η χρήση της συνάρτησης Now() αντί της Date(). 3) Στον πίνακα προστέθηκε και ο κανόνας επικύρωσης [ApoTB]<[EosTB]. 4) Το πεδίο [Eos] του βοηθητικού ερωτήματος qryHLP, όταν το πεδίο EosTB του πίνακα είναι κενό (ο ασθενής δεν έφυγε) , παίρνει τιμή Now(). 5) Το πεδίο ID του πίνακα PatientNurseRatio από αυτόματης αρίθμησης αλλάχθηκε σε αριθμό. 6) Όταν πατούμε το κουμπί της φόρμας ο κώδικας:
Σημειώνεται ότι στον κώδικα η «νύχτα» αρχίζει στις 23:00 της προηγούμενης μέρας. Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 08-01-16 στις 19:29. Αιτία: αλλαγή από New() σε Now() |
#6
| |||
| |||
Καλησπέρα Για τους φίλους του forum στέλνω την τελευταία έκδοση της λύσης με το προαναφερθέν πρόβλημα με μερικές δικές μου τροποποιήσεις. Ευχαριστώ θερμά για άλλη μια φορά τον kapetang και το forum Δημήτρης Τελευταία επεξεργασία από το χρήστη jim67 : 10-01-16 στις 18:01. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Συναρτήσεις] Σύγκριση 2 στηλών με δεδομένα και μεταφορά σε άλλο φύλλο | tasvas | Excel - Ερωτήσεις / Απαντήσεις | 1 | 15-06-16 06:34 |
[Μορφοποίηση] Χρωματισμός ενός κελιού όταν περιέχει μία τιμή από άλλο πίνακα. | VOGAS | Excel - Ερωτήσεις / Απαντήσεις | 13 | 28-01-15 09:37 |
[ Πίνακες ] Ενημέρωση δεδομένων πίνακα από άλλο πίνακα | ΚΩΣΤΑΣ2 | Access - Ερωτήσεις / Απαντήσεις | 2 | 27-04-11 12:50 |
[ Ερωτήματα ] Ενημέρωση ενός field πίνακα από 3 Rows άλλου πίνακα | stathas | Access - Ερωτήσεις / Απαντήσεις | 8 | 23-05-10 11:36 |
Η ώρα είναι 14:49.