Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
![]()
Καλησπέρα σε όλη την κοινότητα: χρειάζομαι την βοήθεια σας γιατί όσο και αν το προσπάθησα δεν κατάφερα τίποτα ανεβάζω ένα δείγμα αυτού που ζητάω ,στην φόρμα Πίνακας1 Ερώτημα θέλω την αφαίρεση ΔΙΚΑΙΟΥΜΕΝΑ-ΔΙΑΡΚΕΙΑΩΡΕΣ και αυτό που θα προκύψει το υπόλοιπο δηλαδή να μετατρέπεται σε ημέρες ώρες λεπτά εάν υπάρχουν , για παράδειγμα στην πρώτη εγγραφή 32-3=29 δηλαδή να φαίνεται 3ημέρες,5ώρες για κάθε ημέρα υπολογίζεται ένα 8ωρο γιατί πρόκειται για μεροκάματα σας ευχαριστώ . Τελευταία επεξεργασία από το χρήστη kosta : 06-07-15 στις 16:44. Αιτία: Για κάθε ημέρα υπολογίζεται ένα 8ωρο γιατί πρόκειται για μεροκάματα |
#2
|
![]()
Κώστα, δοκίμασε στο ερώτημα, ένα νέο πεδίο με : Κώδικας: ΠΕΡΙΦΡΑΣΤΙΚΑ: Int(([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24)/8) & " οκτάωρα, " & Int([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24)-Int(([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24)/8)*8 & " ώρες, " & Round(([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24-Int([ΔΙΚΑΙΟΥΜΕΝΑ]-[ΔΙΑΡΚΕΙΑ]*24))*60;2) & " λεπτά." |
#3
| |||
| |||
![]()
Σπύρο κατ’ αρχήν σ’ ευχαριστώ πάρα πολύ για την άμεση απάντηση σου, ομολογώ ότι εξεπλάγην με το αποτέλεσμα και σίγουρα όσο και να προσπαθούσα δεν θα τα κατάφερνα γιατί οι γνώσεις μου δεν είναι τέτοιου επιπέδου , χωρίς να γίνομαι φορτικός και δεν ξέρω αν γίνεται βέβαια ανεβάζω και πάλι το δείγμα έχοντας περάσει τον τύπο σου στην φόρμα στο αποτέλεσμα που θα δεις αντί να μου βγάζει 2 οκτάωρα, 7 ώρες, 60 λεπτά δεν θα μπορούσε να γράφει 3 οκτάωρα ;
|
#4
| |||
| |||
![]()
Σπύρο έχεις δίκιο μάλλον δεν το διευκρίνισα σωστά μετά από πολύωρη εργασία το έστησα όπως ακριβώς ήθελα το ζητούμενο είναι το εξής: χρησιμοποιώ των τύπο =Int(Άθροισμα([ΔΙΑΡΚΕΙΑ]))*24+Hour(Άθροισμα([ΔΙΑΡΚΕΙΑ])) & ":" & Minute(Άθροισμα([ΔΙΑΡΚΕΙΑ])) για να βρω το άθροισμα των ωρών στο πάνω μέρος της φόρμας, αυτό που ζητάω στο παράδειγμα της φωτογραφίας είναι οι δικαιούμενες 32 μείων σύνολο ωρών 18:15 = 13,85 δηλαδή να μου βγάζει 1οκτάωρα,6ώρες,25λεπτά
|
#5
| |||
| |||
![]()
Καλησπέρα Κώστα κάνεις πολλές μετατροπές μονάδων με αποτέλεσμα σύγχυση και λάθη. Για παράδειγμα: 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
| |||
| |||
![]()
Γιώργο καλησπέρα σ’ ευχαριστώ πολύ για την βοήθεια σου, έχεις απόλυτο δίκιο είναι αυτό που ζητάω όμως αν δεις τα παραδείγματα που ανέβασα χρειάζεται μια στρογγυλοποίηση ή εγώ δεν εφαρμόζω κάτι καλά;
|
#7
| |||
| |||
![]()
Κώστα χρειάζεται στρογγυλοποίηση. Είναι δύσκολο να δημιουργηθεί ένας τύπος λαμβάνοντας υπόψη μας και τις στρογγυλοποιήσεις. Για το λόγο αυτό προτείνω μια λύση με κώδικα 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 Τελευταία επεξεργασία από το χρήστη kapetang : 08-07-15 στις 09:32. Αιτία: Βελτίωση κώδικα |
#8
| |||
| |||
![]()
Γιώργο για μια φορά ακόμη θέλω να σε ευχαριστήσω με έβγαλες από πολύ κόπο γιατί θα αναγκαζόμουν χιλιάδες εγγραφές να τις κάνω χειροκίνητα μία προς μία αυτό ακριβώς ζητούσα. Να ΄σαι καλά. |
#9
| |||
| |||
![]()
Κώστα δοκίμασε και την παρακάτω συνάρτηση, που είναι πιο σύντομη. Κώδικας: 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
| |||
| |||
![]()
Οκ όλα καλά.
|
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | 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 |
Η ώρα είναι 18:26.