Καλησπέρα
Γιώργο, στη ΒΔ που επισυνάπτω, προσπάθησα να δώσω μια λύση στο ζητούμενο.
Βασίζεται στη ΒΔ που ανέβασες, αλλά με κάποιες αλλαγές. Τις ακόλουθες:
1) Επειδή το πεδίο «ΔΙΑΦΟΡΑ» είναι υπολογιζόμενο το αφαίρεσα από τον πίνακα, για να μη δημιουργεί προβλήματα ενημέρωσης . Η διαφορά φαίνεται στο ερώτημα και τη σχετική φόρμα.
2) Στα πεδία κειμένου «ΑΡΧΙΚΟΣ ΧΡΟΝΟΣ» και «ΤΕΛΙΚΟΣ ΧΡΟΝΟΣ» καθόρισα μήκος 8 χαρακτήρων και την συνθήκη επικύρωσης: Like "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]".
Επίσης για να μη δημιουργούνται προβλήματα αφαίρεσα τη μάσκα εισαγωγής.
3) Πρόσθεσα τη λειτουργική μονάδα «Module1» και τη συνάρτηση «Diafora», η οποία υπολογίζει τη διαφορά των χρονικών στιγμών «ΑΡΧΙΚΟΣ ΧΡΟΝΟΣ», «ΤΕΛΙΚΟΣ ΧΡΟΝΟΣ» και την αποδίδει στη μορφή: λλ:δδ:εε.
Ο κώδικας της συνάρτησης δίνεται παρακάτω:
Κώδικας:
Public Function Diafora(StartTime As Variant, EndTime As Variant) As String
Dim S1 As Variant, S2 As Variant
Dim N As Long, N1 As Long, N2 As Long
If IsNull(StartTime) Or IsNull(EndTime) Then
Diafora = "": Exit Function
End If
S1 = Split(StartTime, ":"): S2 = Split(EndTime, ":")
'Έναρξη χρονομέτρησης σε εκατοστά του δευτερόλεπτου
N1 = S1(0) * 6000 + S1(1) * 100 + S1(2)
'Τέλος χρονομέτρησης σε εκατοστά του δευτερόλεπτου
N2 = S2(0) * 6000 + S2(1) * 100 + S2(2)
'Διαφορά σε εκατοστά του δευτερόλεπτου
N = N2 - N1
'Μετατροπή της διαφοράς σε μορφή λλ:δδ:εε
Diafora = Format(N \ 6000, "00") & ":" & Format((N Mod 6000) \ 100, "00") & _
":" & Format((N Mod 6000) Mod 100, "00")
End Function
Η συνάρτηση χρησιμοποιείται στο ερώτημα και στη φόρμα για τον υπολογισμό των διαφορών.
Κάνε δοκιμές και ενημέρωσέ μας, αν σε καλύπτει.
Φιλικά/Γιώργος