WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Software (http://www.wcm.at/forum/forumdisplay.php?f=5)
-   -   access zeiten rechnen (http://www.wcm.at/forum/showthread.php?t=113168)

snatch 24.10.2003 07:19

access zeiten rechnen
 
hallo zusammen,

kann man in access zeiten im format stunden minuten sekunden und hundertstelsek. addieren bzw. subtrahieren. brauch dass für eine zeitnehmungsverwaltung für diverse schi- bzw. laufrennen.

gibts andere programme die mit zeiten auf hundertstel genau rechnen können, diese müssten halt auch eine ascii schnittstelle für die übernahme der zeitnehmungsdaten haben.

lg

Seidl 24.10.2003 09:00

Warum in die Ferne schweifen, ...


Public Sub use()
Debug.Print diff("0:0:0:2", "0:0:0:1")
End Sub

Public Function diff(a As String, b As String) As String
Dim PartsA() As String
Dim PartsB() As String
Dim ah As Long
Dim bh As Long
Dim x As Long
Dim i As Integer
Dim flag As Boolean
PartsA() = Split(a, ":")
PartsB() = Split(b, ":")
If UBound(PartsA) <> 3 Or UBound(PartsB) <> 3 Then
MsgBox "Erwartet XX:XX:XX:XX", vbInformation, "Ungültiges Format"
Else
flag = True
For i = 0 To 3
flag = flag And IsNumeric(PartsA(i)) And IsNumeric(PartsB(i))
Next
If flag Then
ah = (PartsA(0) * 360000 + PartsA(1) * 6000 + PartsA(2) * 100 + PartsA(3))
bh = (PartsB(0) * 360000 + PartsB(1) * 6000 + PartsB(2) * 100 + PartsB(3))
x = ah - bh
PartsA(0) = x \ 360000
x = x - PartsA(0) * 360000
PartsA(1) = x \ 6000
x = x - PartsA(1) * 6000
PartsA(2) = x \ 100
x = x - PartsA(2) * 100
PartsA(3) = x
flag = True
For i = 0 To 3
flag = flag And PartsA(i) = Abs(PartsA(i))
PartsA(i) = Abs(PartsA(i))
Next
diff = Join(PartsA, ":")
If Not flag Then
diff = "-" & diff
End If
Else
MsgBox "Alphanumerische Zeichen sind nicht erlaubt.", vbInformation, "Ungültiges Format"
End If
End If
End Function


:D

snatch 27.10.2003 10:49

danke für die antwort.

kannst du mir da auf die sprünge helfen, wie ich diesen code anwende.

den code ansich versteh ich, obwohl ich mich mit vb bzw vba mich nicht wirklich beschäftige. wie kann ich die prozedur ausführen im excel.


lg

Seidl 27.10.2003 11:39

Unter Excel? Ich dachte unter Access.
Nun, wie dem auch sei.

1.) Excel öffnen und ALT+F11 drücken, um den Visual-Basic-Editor zu öffnen.
2.) Im Projekt-Explorer (links oben) das betreffende VBA-Projekt mit der rechten Maustaste anklicken und "einfügen/Modul" wählen.
3.) Im Code-Fenster des neuen Moduls (rechts), den Code der Funktion "diff" einfügen.
4.) Speichern und Code-Fenster schliessen.
5.) Die Funktion verwenden, wie jede andere Funktion auch [z.B. =Diff(A1;B1)]

hoshibrother 27.10.2003 19:03

hab so ein ähnliches prob mit dienstplan gehabt: ich rechne mir die minuten und stunden in dezimalstelle um und bei der ausgabe wieder zurück.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag