Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Βοήθεια για δημιουργία ερωτήματος ή έκθεσης
Καλησπέρα Ως μέτριος γνώστης της access, ζητώ τη βοήθειά σας αν είναι δυνατόν σχετικά με ένα θέμα που με απασχολεί. Σε ένα πίνακα έχω τα εξής δεδομένα: ΚωδΑσθενούς είσοδος έξοδος Νοσηλευόμενος: Ναι/Οχι πχ Κώδικας: ΚωδΑσθενούς είσοδος έξοδος Νοσηλευόμενος 1868 1/10/2010 Ναι 1918 12/5/2010 13/1/2011 Οχι ή αύξουσα σειρά μηνός δηλ. κάπως έτσι: Κώδικας: ΚωδΑσθενούς είσοδος, έξοδος, Νοσηλευόμενος, Μήνας 1918 12/5/2010 13/1/2011 Οχι 01/11 1868 1/10/2010 Ναι* 01/11 1918 12/5/2010 13/1/2011 Οχι 12/10 1868 1/10/2010 Ναι* 12/10 1918 12/5/2010 13/1/2011 Οχι 11/10 1868 1/10/2010 Ναι* 11/10 1918 12/5/2010 13/1/2011 Οχι 10/10 1868 1/10/2010 Ναι* 10/10 1918 12/5/2010 13/1/2011 Οχι 09/10 1918 12/5/2010 13/1/2011 Οχι 08/10 1918 12/5/2010 13/1/2011 Οχι 07/10 1918 12/5/2010 13/1/2011 Οχι 06/10 1918 12/5/2010 13/1/2011 Οχι 05/10 κοκ (*) Θεωρούμε ημερομνία εξόδου τον τρέχοντα μήνα. (νοσηλευόμενοι ασθενείς) του συγκεκριμένου μήνα. Σημ. Ελπίζω στη βοήθειά σας αν έγινα κατανοητός. Ευχαριστώ. Επισυνάπτω πίνακα. Τελευταία επεξεργασία από το χρήστη nasos23 : 27-01-11 στις 05:50. |
#2
| |||
| |||
Καλημέρα Νάσο, η ΒΔ που επισυνάπτω, αποτελεί μια επέκταση της δικής σου: 1. Πρόσθεσα ένα παραμετρικό ερώτημα «qryEnterExit», που προσομοιώνει το ζητούμενο. Αν θέλουμε να πάρουμε στοιχεία για το 2010 και τους μήνες Αύγουστο μέχρι και Οκτώβριο, πρέπει να δώσουμε για την πρώτη παράμετρο: 10/08 και για τη δεύτερη: 10/10. Αν θέλουμε να πάρουμε όλες τις εγγραφές, μπορούνε να δώσουμε στην πρώτη παράμετρο: 0 (μηδέν) και στη δεύτερη: α. 2. Πρόσθεσα επίσης και μία φόρμα σε προβολή συγκεντρωτικού πίνακα «frmEnterExitPivotTable», που λόγω της ευελιξίας στην εφαρμογή φίλτρων, πιστεύω ότι σε καλύπτει καλύτερα. Φιλικά/Γιώργος |
#3
| ||||
| ||||
Καλησπέρα σε όλους! Η δική μου πρόταση: Δημιουργούμε ένα ερώτημα με το όνομα: QryStrDates Κώδικας: SELECT [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].ID, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].ΚωδΑσθενούς, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].έξοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος, [Δώσε Ημερομηνία από (Μορφή: MMEE)] AS StartDate, [Δώσε Ημερομηνία μέχρι (Μορφή: MMEE)] AS EndDate FROM [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ]; πίνακα "ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ" όπου προσθέτουμε ένα επίπεδο ομαδοποίησης με βάση το πεδίο "είσοδος". Αφού δημιουργήσουμε την Έκθεση, περνάμε σε Προβολή σχεδίασης και στο πεδίο "Προέλευση Εγγραφών" της Έκθεσης περνάμε το παρακάτω: Κώδικας: SELECT QryStrDates.ID, QryStrDates.ΚωδΑσθενούς, QryStrDates.είσοδος, QryStrDates.έξοδος, QryStrDates.Νοσηλευόμενος FROM QryStrDates WHERE (((Month([είσοδος]))>=Left([StartDate],2) And (Month([είσοδος]))<=Left([EndDate],2)) AND ((Right(Year([είσοδος]),2))>=Right([StartDate],2) And (Right(Year([είσοδος]),2))<=Right([EndDate],2))) OR (((QryStrDates.StartDate) Is Null) AND ((QryStrDates.EndDate) Is Null)); Η μορφοποίηση των τιμών στις παραμέτρους θα πρέπει να είναι "ΜΜΕΕ" ( για περισσότερη ευκολία κατά την πληκτρολόγηση αλλά και ανεξαρτησία από τη μορφοποίηση της ημερομηνίας του υπολογιστή ). Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#4
| |||
| |||
Καλημέρα Γιώργο και Τάσο ευχαριστώ για την άμεση απάντησή σας στο θέμα μου. Εφτιαξα λοιπόν ένα ερώτημα συννένωσης που νομίζω με εξυπηρετεί για να μπορώ να έχω όλες τις εγγραφές. Δηλ όχι μόνο την είσοδο και την έξοδο των ασθενών του μήνα αλλά και τους ασθενείς που εισήλθαν πριν απ' αυτόν και παραμένουν νοσηλευόμενοι. Πχ Για το μήνα Οκτώβριο 2010 Κώδικας: SELECT [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].ΚωδΑσθενούς, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].έξοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος, Format([είσοδος],"mm/yy") AS Μήνας FROM [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ] WHERE (((Format([έξοδος],"yy/mm")) Between [Δώσε την αρχή σε μορφή: εε/μμ] And [Δώσε το τέλος σε μορφή: εε/μμ])) ORDER BY [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].έξοδος DESC; union SELECT [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].ΚωδΑσθενούς, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].έξοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος, Format([είσοδος],"mm/yy") AS Μήνας FROM [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ] WHERE (((Format([είσοδος],"yy/mm")) Between [Δώσε την αρχή σε μορφή: εε/μμ] And [Δώσε το τέλος σε μορφή: εε/μμ])) ORDER BY [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος DESC; UNION SELECT [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].ΚωδΑσθενούς, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].έξοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος, Format([είσοδος],"mm/yy") AS Μήνας FROM [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ] WHERE ((([ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος)<#10/1/2010#) AND (([ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος)=Yes)) ORDER BY [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος DESC; WHERE ((([ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος)<#10/1/2010#) να μου ανοίγει ένα πλαίσιο οπου θα πληκτρολογώ την ημερομηνία αντί να ανοίγω κάθε φορά το ερώτημα σε προβολή σχεδίασης. Ευχαριστώ πολύ και συγγνώμη αν σας κούρασα Φιλικά Νάσος Επισυνάπτω ξανά τη φόρμα Τελευταία επεξεργασία από το χρήστη Tasos : 28-01-11 στις 12:21. Αιτία: Περιορισμός Πλάτους Πλαισίου Κώδικα |
#5
| |||
| |||
Καλημέρα Νάσο, σχετικά με τη ΒΔ που δημιουργείς:
Κώδικας: SELECT [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].ΚωδΑσθενούς, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].έξοδος, [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος, Format([είσοδος],"mm/yy") AS Μήνας FROM [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ] WHERE (((Format([είσοδος],"yy/mm")) Between [Δώσε την αρχή σε μορφή: εε/μμ] And [Δώσε το τέλος σε μορφή: εε/μμ])) OR ((([ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος)<[Δώσε ημερομηνία νοσιλευόμενων στη μορφή: ηη/μμ/εεεε]) AND (([ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].Νοσηλευόμενος)=-1)) ORDER BY [ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ].είσοδος DESC; Τελειώνοντας πιστεύω ότι για να πάρεις σωστή βοήθεια από το φόρουμ θα πρέπει να διευκρινίσεις τις παραπάνω απορίες. Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη Tasos : 28-01-11 στις 12:20. Αιτία: Περιορισμός Πλάτους Πλαισίου Κώδικα |
#6
| ||||
| ||||
Καλημέρα Γιώργο και Νάσο! Με αφορμή το ζητούμενο του Νάσου, έφτιαξα μια παραδειγματική εφαρμογή (που είμαι σίγουρος ότι θα χρησιμεύσει σε πολλούς) όπου μπορεί κανείς μέσα από φόρμα να φιλτράρει δεδομένα με πολλαπλά κριτήρια τόσο στη φόρμα, όσο και σε Έκθεση. Δείτε την στο συνημμένο. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#7
| |||
| |||
Παράθεση:
Εφόσον ο ασθενής παραμένει νοσηλευόμενος δεν μπορεί να καταχωρηθεί ημερ/νία εξόδου. Η 2/12/2010 είναι η ημερομηνία εξόδου. Παράθεση:
Παράθεση:
Θεώρησέ το σαν μηνιαία στατιστική. Το ερώτημα συνένωσης που χρησιμοποιώ δεν ανταποκρίνεται 100% στα δεδομένα γιατί ένας ασθενής που εισήλθε τον προηγούμενο μήνα και εξήλθε τον επόμενο απο τον ζητούμενο πιθανό να μην εμφανιστεί στις εγγραφές. Μία σκέψη για μένα είναι η καθημερινή λογοδοσία (Ημερήσια κατάσταση ασθενών), που είναι εύκολο να το κάνω αλλά προβληματίζομαι για τον όγκο των δεδομένων γι αυτό ζήτησα τη βοήθεια του φόρουμ Και πάλι σ' ευχαριστώ Νάσος |
#8
| |||
| |||
Φίλε Τάσο Με μιά ματιά που έριξα στην εφαρμογή την είδα πολύ ενδιαφέρουσα. Θα τη μελετήσω. Ευχαριστώ. Νάσος |
#9
| |||
| |||
Καλησπέρα στην παρέα Φίλε Τάσο έκανες πολύ καλή δουλειά. Νάσο, ίσως άρχισα να καταλαβαίνω. Για τον ασθενή «ΑΑΑ» γνωρίζουμε αρχικά και καταχωρούμε την ημερομηνία εισόδου. Μέχρι να πάρει εξιτήριο ανήκει στην κατηγορία «νοσηλευόμενος» και η ημερομηνία εξόδου είναι κενή. Μόλις πάρει εξιτήριο ο «ΑΑΑ» καταχωρούμε την ημερομηνία εξόδου και του αλλάζουμε και κατηγορία τον κατατάσσουμε στους «μη νοσηλευόμενους». Με την παραπάνω λογική, αν σήμερα, κοιτάξω τη λίστα των ασθενών, ξέρω αμέσως ότι όσοι ασθενείς έχουν κενή την ημερομηνία εξόδου νοσηλεύονται και όσοι όχι πήραν εξιτήριο, δηλαδή είναι πλεονασμός η κατηγορία «νοσηλευόμενος» και «μη νοσηλευόμενος». Θέλω τους ασθενείς που νοσηλεύτηκαν σε ένα συγκεκριμένο μήνα (έτος/ μήνας). Σ’ αυτούς περιλαμβάνονται: 1. Όσοι εισήχθηκαν αυτό το μήνα 2. Όσοι πήραν εξιτήριο αυτό το μήνα (ανεξάρτητα από την ημερομηνία εισόδου). 3.Όσοι εισήχθηκαν πριν απ’ αυτόν το μήνα και εξακολουθούν να νοσηλεύονται (ημερομηνία εξόδου κενή) ή η ημερομηνία εξόδου καλύπτει το μήνα. Αν έτσι είναι, δες το παρακάτω ερώτημα που βασίζεται στον πίνακα του Τάσου. Κώδικας: SELECT tblActivities.ID, tblActivities.PatID, tblActivities.PatEntryDate, tblActivities.PatExitDate, tblActivities.PatHasBed FROM tblActivities WHERE ((Format([patEntryDate],"yyyy/mm")=[Δώσε το μήνα σε μορφή: εεεε/μμ])) OR ((Format(nz([PatExitDate],0),"yyyy/mm")=[Δώσε το μήνα σε μορφή: εεεε/μμ])) OR ((Format([patEntryDate],"yyyy/mm")<[Δώσε το μήνα σε μορφή: εεεε/μμ]) AND (Format(nz([PatExitDate],#31/12/9999#),"yyyy/mm")>=[Δώσε το μήνα σε μορφή: εεεε/μμ])) ORDER BY tblActivities.PatEntryDate DESC; |
#10
| |||
| |||
Άφωνος!!!!!!!! Γιώργο και Τάσο δεν βρίσκω λόγια να σας ευχαριστήσω. Είναι ακριβώς αυτό που ζητούσα Νάσος |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
Δημιουργία ερωτήματος | ΜΑΝΟ | Access - Ερωτήσεις / Απαντήσεις | 22 | 22-01-17 23:29 |
[ Ερωτήματα ] Δημιουργία Ερωτήματος μέσω VBA | noname | Access - Ερωτήσεις / Απαντήσεις | 4 | 18-09-15 20:23 |
Βοήθεια σε συνάρτηση ερωτήματος | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 1 | 24-12-14 00:33 |
[ Ερωτήματα ] Δημιουργία ερωτήματος ενημέρωσης | mgeorge | Access - Ερωτήσεις / Απαντήσεις | 5 | 01-09-13 13:02 |
[ Εκθέσεις ] Δημιουργία έκθεσης | bill72 | Access - Ερωτήσεις / Απαντήσεις | 2 | 17-10-12 10:04 |
Η ώρα είναι 07:48.