Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > [ Συναρτήσεις ] Υπολογισμός ημερών μιας περιόδου ανά μήνα

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 02-08-13, 01:16
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 25-07-2013
Μηνύματα: 25
Προεπιλογή Υπολογισμός ημερών μιας περιόδου ανά μήνα

Γεια σας
Λοιπόν ως νέος χρήστης βλέπω φανταστική δουλειά στο 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)
(Τα ονόματα και τα δεδομένα στη βάση είναι τυχαία και υποθετικά).
Συνημμένα Αρχεία
Τύπος Αρχείου: zip ICU 5.13.zip (190,7 KB, 36 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 03-08-13, 16:33
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Δημήτρη, καλωσόρισες στην παρέα του φόρουμ.

Στην επισυναπτόμενη ΒΔ , θα βρεις μια πρόταση για το ζητούμενο.

Συγκεκριμένα έχω προσθέσει στη ΒΔ που ανέβασες:

1) Τη φόρμα frmPatiensPerMonth, στην οποία όταν πιέσουμε το μοναδικό κουμπί της, τρέχει ο παρακάτω κώδικας.

Κώδικας:
Option Compare Database
Option Explicit

Private Sub cmdPatiensPerMonth_Click()
    On Error GoTo Err_Hander
    Dim strSQL As String, StartMonth As Integer, EndMonth As Integer
    Dim rs As DAO.Recordset, J As Integer, PatientIn As Date, PatientOut As Date
    Dim Y1 As Integer, strSQLIns As String, D1 As Date, D2 As Date

    strSQL = "SELECT Patients.ID,[Admission Date], [Discharge Date]" & _
             "FROM Patients ORDER BY [Admission Date];"

    Set rs = CurrentDb.OpenRecordset(strSQL)
    If rs.RecordCount > 0 Then
        CurrentDb.Execute ("Delete * From PatiensPerMonth")
        strSQL = "Insert Into PatiensPerMonth (ID, Apo, Eos) Values("
        rs.MoveFirst
        Do While Not rs.EOF
            PatientIn = rs![Admission Date]
            If IsNull(rs![Discharge Date]) Then
                PatientOut = Date
            Else
                PatientOut = rs![Discharge Date]
            End If
            Y1 = Year(PatientIn)
            StartMonth = Month(PatientIn)
            EndMonth = StartMonth + DateDiff("m", PatientIn, PatientOut)
            For J = StartMonth To EndMonth
                If J <> StartMonth Then
                    D1 = DateSerial(Y1, J, 1)
                Else
                    D1 = PatientIn
                End If
                If PatientOut > DateSerial(Y1, J + 1, 0) Then
                    D2 = DateSerial(Y1, J + 1, 0)
                Else
                    D2 = PatientOut
                End If

                strSQLIns = strSQL & rs!ID & ", #" & Format(D1, "mm/dd/yyyy") & "#, #" & Format(D2, "mm/dd/yyyy") & "#)"
                CurrentDb.Execute (strSQLIns)
            Next
            rs.MoveNext
        Loop
    End If
Exit_sub:
    If Not rs Is Nothing Then rs.Close
    MsgBox "Η διαδικασία ολοκληρώθηκε ..."
    Exit Sub

Err_Hander:
    MsgBox Err.Description, "Error"
    Resume Exit_sub


End Sub
Ο κώδικας για κάθε εγγραφή του πίνακα Patiens (κάθε νοσηλεία ID), κατανέμει το χρονικό διάστημα [PatientIn, PatientOut] (Έναρξη νοσηλείας, Τέλος νοσηλείας), κατά μήνα.

Δηλαδή χωρίζει το διάστημα [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, κλπ).

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip DatesPerMonth.zip (209,0 KB, 65 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη kapetang : 03-08-13 στις 16:47. Αιτία: αλλαγή συνημμένου
Απάντηση με παράθεση
  #3  
Παλιά 03-08-13, 23:19
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 25-07-2013
Μηνύματα: 25
Προεπιλογή

Γιώργο
Δούλεψε θαυμάσια. Σ' ευχαριστώ πάρα πολύ. Χρωστάω πολλά.
(Τελικά χωρίς VBA δεν μπορείς να κάνεις ούτε βήμα παραπάνω στην Access).
Τη σημείωση για τη σχεδίαση την έχω υπόψη μου - τη δουλεύω τώρα.

'Α και κάτι ακόμη..Οκ στο ερώτημα που έκανα όταν ζητάω γράφημα πχ. για ένα έτος μου βγάζει αθροίσματα των 12 μηνών ξεχωριστά. Όταν όμως ζητάω γράφημα πχ για 2 ή περισσότερα έτη μου βγάζει τους 12 μήνες των αντίστοιχων ετών αθροιστικά. Πως πρέπει να συνδυάσω το έτος με το μήνα στο ερώτημα ώστε να μου βγάζει όλους τους μήνες του κάθε έτους σε ένα γράφημα με χρονική συνέχεια;

Και πάλι ευχαριστώ (νομίζω οτι θα γίνω φανατικός του forum - αρκεί να μπορώ κι εγώ να προσφέρω κάτι)
Δημήτρης
Απάντηση με παράθεση
  #4  
Παλιά 04-08-13, 08:30
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Δημήτρη, στην επισυναπτόμενη ΒΔ έχω προσθέσει το ερώτημα qrySumLOSPerMonth και τη φόρμα frmSumLOSPerMonth
με προεπιλεγμένη προβολή το συγκεντρωτικό γράφημα.

Η φόρμα βασίζεται στο ερώτημα qryLOS.

Πιστεύω ότι είναι αυτό που ζητάς

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip DatePerMonth2.zip (223,2 KB, 86 εμφανίσεις)
Απάντηση με παράθεση
  #5  
Παλιά 04-08-13, 16:43
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 25-07-2013
Μηνύματα: 25
Προεπιλογή

Γιώργο

Αυτό ήταν. Νάσαι καλά.
Με κάποιες μικρές τροποποιήσεις θα γίνει αυτό ακριβώς που φανταζόμουν. Ευχαριστώ και πάλι.

Δημήτρης
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Υπολογισμός ημερών μήνα 30 ημερών Σπύρος -psp Excel - Ερωτήσεις / Απαντήσεις 20 16-04-16 20:12
[Συναρτήσεις] Υπολογισμός ημερομηνίας μετά από ορισμένο αριθμό ημερών costas5 Excel - Ερωτήσεις / Απαντήσεις 2 20-03-16 20:18
[Συναρτήσεις] Αναφορά συνόλου δεδομένων μέχρι τώρα εργάσιμων ημερών τρέχοντος μήνα girapas Excel - Ερωτήσεις / Απαντήσεις 3 13-01-13 21:22
Υπολογισμός ημερών άδειας xristos0718 Access - Ερωτήσεις / Απαντήσεις 3 14-01-12 19:14
Υπολογισμός Ημερών πλήν Σ/Κ Ghost_carp Access - Ερωτήσεις / Απαντήσεις 3 07-10-09 19:36


Η ώρα είναι 14:35.