ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αφαίρεση ωρών και μετατροπή υπολοίπου σε ημέρες ώρες.

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 06-07-15, 11:34
Όνομα: ΚΩΣΤΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-10-2012
Μηνύματα: 36
Προεπιλογή Αφαίρεση ωρών και μετατροπή υπολοίπου σε ημέρες ώρες.

Καλησπέρα σε όλη την κοινότητα:
χρειάζομαι την βοήθεια σας γιατί όσο και αν το προσπάθησα δεν κατάφερα τίποτα ανεβάζω ένα δείγμα αυτού που ζητάω ,στην φόρμα Πίνακας1 Ερώτημα θέλω την αφαίρεση ΔΙΚΑΙΟΥΜΕΝΑ-ΔΙΑΡΚΕΙΑΩΡΕΣ και αυτό που θα προκύψει το υπόλοιπο δηλαδή να μετατρέπεται σε ημέρες ώρες λεπτά εάν υπάρχουν , για παράδειγμα στην πρώτη εγγραφή 32-3=29 δηλαδή να φαίνεται 3ημέρες,5ώρες για κάθε ημέρα υπολογίζεται ένα 8ωρο γιατί πρόκειται για μεροκάματα σας ευχαριστώ .
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb Βδ.accdb (332,0 KB, 30 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη kosta : 06-07-15 στις 16:44. Αιτία: Για κάθε ημέρα υπολογίζεται ένα 8ωρο γιατί πρόκειται για μεροκάματα
Απάντηση με παράθεση
  #2  
Παλιά 06-07-15, 22:11
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.402
Προεπιλογή

Κώστα, δοκίμασε στο ερώτημα, ένα νέο πεδίο με :
Κώδικας:
ΠΕΡΙΦΡΑΣΤΙΚΑ: Int(([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24)/8) & " οκτάωρα, 
" & Int([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24)-Int(([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24)/8)*8 & " ώρες, " 
& Round(([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24-Int([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24))*60;2) & " λεπτά."
Σύνδεσε το στην φόρμα και άλλαξε αν θέλεις την περιγραφή «οκτάωρα» σε «μέρες» ή ότι άλλο σε βολεύει.
Απάντηση με παράθεση
  #3  
Παλιά 06-07-15, 23:10
Όνομα: ΚΩΣΤΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-10-2012
Μηνύματα: 36
Προεπιλογή

Σπύρο κατ’ αρχήν σ’ ευχαριστώ πάρα πολύ για την άμεση απάντηση σου, ομολογώ ότι εξεπλάγην με το αποτέλεσμα και σίγουρα όσο και να προσπαθούσα δεν θα τα κατάφερνα γιατί οι γνώσεις μου δεν είναι τέτοιου επιπέδου , χωρίς να γίνομαι φορτικός και δεν ξέρω αν γίνεται βέβαια ανεβάζω και πάλι το δείγμα έχοντας περάσει τον τύπο σου στην φόρμα στο αποτέλεσμα που θα δεις αντί να μου βγάζει 2 οκτάωρα, 7 ώρες, 60 λεπτά δεν θα μπορούσε να γράφει 3 οκτάωρα ;
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb Βδ.accdb (404,0 KB, 34 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 07-07-15, 10:19
Όνομα: ΚΩΣΤΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-10-2012
Μηνύματα: 36
Προεπιλογή

Σπύρο έχεις δίκιο μάλλον δεν το διευκρίνισα σωστά μετά από πολύωρη εργασία το έστησα όπως ακριβώς ήθελα το ζητούμενο είναι το εξής: χρησιμοποιώ των τύπο =Int(Άθροισμα([ΔΙΑΡΚΕΙΑ]))*24+Hour(Άθροισμα([ΔΙΑΡΚΕΙΑ])) & ":" & Minute(Άθροισμα([ΔΙΑΡΚΕΙΑ])) για να βρω το άθροισμα των ωρών στο πάνω μέρος της φόρμας, αυτό που ζητάω στο παράδειγμα της φωτογραφίας είναι οι δικαιούμενες 32 μείων σύνολο ωρών 18:15 = 13,85 δηλαδή να μου βγάζει 1οκτάωρα,6ώρες,25λεπτά
Συνημμένα Thumbnails
Αφαίρεση ωρών και μετατροπή υπολοίπου σε ημέρες ώρες.-bd.jpg  
Απάντηση με παράθεση
  #5  
Παλιά 07-07-15, 19:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

Καλησπέρα

Κώστα κάνεις πολλές μετατροπές μονάδων με αποτέλεσμα σύγχυση και λάθη.

Για παράδειγμα:

1) οι 18:15 (18 ώρες και 15 λεπτά) ισούνται με 18 +15/60 ώρες =18,25.

Η διαφορά 32-18,25=13,75 ώρες και όχι 13,85 που γράφεις.

2) Οι 13,85 ώρες, όταν εκφραστούν σε οκτάωρα, ώρες και λεπτά είναι 1 οκτάωρο, 5 ώρες και 51 (0,85*60) λεπτά και όχι 1 οκτάωρο, 6 ώρες και 25 λεπτά.

Προτείνω:

1) Να προσθέσεις στη φόρμα σου ένα πεδίο (μπορεί να είναι και κρυφό) οποίο θα ονομάσεις Η (αγγλικό) και στο οποίο θα υπολογίζεται η διαφορά= [ΔΙΚΑΙΟΥΜΕΝΕΣ]- Άθροισμα([ΔΙΑΡΚΕΙΑ])*24 σε ώρες (δεκαδικός αριθμός).

2) Το πεδίο Η είναι βοηθητικό και θα χρησιμοποιηθεί για να πάρεις την έκφραση, που θέλεις.

Βάλε στο πεδίο που θέλεις την έκφραση τον τύπο:

=H\8 & " Οκτάωρα, " & int(H-(H\8)*8) & " ώρες, " & (H-(H\8)*8-INT(H-(H\8)*8))*60 & " λεπτά"

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #6  
Παλιά 07-07-15, 22:01
Όνομα: ΚΩΣΤΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-10-2012
Μηνύματα: 36
Προεπιλογή

Γιώργο καλησπέρα σ’ ευχαριστώ πολύ για την βοήθεια σου, έχεις απόλυτο δίκιο είναι αυτό που ζητάω όμως αν δεις τα παραδείγματα που ανέβασα χρειάζεται μια στρογγυλοποίηση ή εγώ δεν εφαρμόζω κάτι καλά;
Συνημμένα Thumbnails
Αφαίρεση ωρών και μετατροπή υπολοίπου σε ημέρες ώρες.-d2.jpg   Αφαίρεση ωρών και μετατροπή υπολοίπου σε ημέρες ώρες.-d1.jpg   Αφαίρεση ωρών και μετατροπή υπολοίπου σε ημέρες ώρες.-d3.jpg  
Απάντηση με παράθεση
  #7  
Παλιά 08-07-15, 00:18
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

Κώστα χρειάζεται στρογγυλοποίηση.

Είναι δύσκολο να δημιουργηθεί ένας τύπος λαμβάνοντας υπόψη μας και τις στρογγυλοποιήσεις.

Για το λόγο αυτό προτείνω μια λύση με κώδικα VBA.

1) Θα πρέπει να αντιγράψεις την παρακάτω συνάρτηση σε μια μονάδα κώδικα (Module).
Κώδικας:
Public Function Expression(T As Variant) As Variant
    Dim O As Long, H As Long, m As Long, x As Double
    If Nz(T, "") <> "" Then
        O = Int(T / 8)
        x = T - CInt(O * 8)
        H = Int(x)
        m = CInt((x - H) * 60)
        If m >= 60 Then
            H = H + Int(m / 60)
            m = m Mod 60
            If H >= 8 Then
                O = O + Int(H / 8)
                H = H Mod 8
            End If
        End If
        Expression = O & " οκτάωρα, " & H & " ώρες, " & m & " λεπτά"
    End If
End Function
2) Στο πεδίο που θα εμφανίζεται η έκφραση πρέπει να βάλλεις τον τύπο: =Expression([H])

Τελευταία επεξεργασία από το χρήστη kapetang : 08-07-15 στις 09:32. Αιτία: Βελτίωση κώδικα
Απάντηση με παράθεση
  #8  
Παλιά 08-07-15, 14:45
Όνομα: ΚΩΣΤΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-10-2012
Μηνύματα: 36
Προεπιλογή

Γιώργο για μια φορά ακόμη θέλω να σε ευχαριστήσω με έβγαλες από πολύ κόπο γιατί θα αναγκαζόμουν χιλιάδες εγγραφές να τις κάνω χειροκίνητα μία προς μία αυτό ακριβώς ζητούσα.
Να ΄σαι καλά.
Απάντηση με παράθεση
  #9  
Παλιά 08-07-15, 15:54
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

Κώστα δοκίμασε και την παρακάτω συνάρτηση, που είναι πιο σύντομη.

Κώδικας:
Public Function Expression(T As Variant) As Variant
    Dim O As Long, H As Long, m As Long, x As Long
    If Nz(T, "") <> "" Then
        x = CInt(T * 60)    'σύνολο λεπτών
        m = x Mod 60        'λεπτά
        H = Int(x / 60)
        O = Int(H / 8)      'Οκτάωρα
        H = H Mod 8         'ώρες
        Expression = O & " οκτάωρα, " & H & " ώρες, " & m & " λεπτά"
    End If
End Function
Απάντηση με παράθεση
  #10  
Παλιά 08-07-15, 16:42
Όνομα: ΚΩΣΤΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-10-2012
Μηνύματα: 36
Προεπιλογή

Οκ όλα καλά.
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Φόρμες ] Ημερολόγιο σε φόρμα με μορφοποιημένες ημέρες Λάμπρος Τ Access - Ερωτήσεις / Απαντήσεις 18 16-11-19 11:28
[Γενικά] Συνεχόμενες ημέρες εργασίας. bill72 Excel - Ερωτήσεις / Απαντήσεις 24 17-11-16 15:38
[Γενικά] Υπολογισμός Ημερομισθιων σε συγκεκριμένες ημέρες Dolenhil Excel - Ερωτήσεις / Απαντήσεις 13 14-03-15 10:59
Πράξεις με ώρες comsup Access - Ερωτήσεις / Απαντήσεις 4 13-02-13 08:53
[Excel07] Αντιστοίχιση ημερομηνιών με ημέρες Celicamomo Excel - Ερωτήσεις / Απαντήσεις 5 09-01-12 00:02


Η ώρα είναι 22:51.