Wettkampfzeiten

01/01/2010 - 20:55 von Georg Bermueller | Report spam
Hallo NG,
zuerst allen ein schönes und glüßckliches neues Jahr.
Und nun zum Problem: In einer Access-Datenbank im 2000 Format sollen
Wettkampfzeiten mit Hunderstelsekunden festgehalten werden.

Ich habe unter http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Wettkampfzeiten
einen Vorschlag gefunden die Zeit in ein Feld vom Typ Long abzulegen. Beim
Formular müßte man dann wohl beim Anzeigen immer ein Hilfsfeld zur Anzeige
und Eingabe füllen und bei Verànderung dieses Feldes das Feld im Datensatz
àndern. Außerdem ist eine entsprechende Fehlerbehandlung zu Programmieren.
Die Funktion strHundertstelSekunden wandelt die Zahlen bis 2099999999
(5833:19:59,99) in einen String um.
Nur die Funktion HundertstelSekundenStr versagt bei einen String ab 100
Stunden "100:00:00,00". Trotz intensivem Studium habe ich die Wirkungsweise
nicht ganz verstanden und daher den Fehler nicht gefunden. Ich müßte sie
ganz neu bauen.

Hat jemand einen Lösungsvorschlag oder ein Beispiel zur Lösung des Problems
Zeiten mit Hunderstelsekunden zu verwalten?

Gruß Georg
 

Lesen sie die antworten

#1 Peter Doering
02/01/2010 - 03:56 | Warnen spam
Hallo,

Georg Bermueller wrote:

zuerst allen ein schönes und glüßckliches neues Jahr.



Gleichfalls.

Und nun zum Problem: In einer Access-Datenbank im 2000 Format sollen
Wettkampfzeiten mit Hunderstelsekunden festgehalten werden.

Ich habe unter http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Wettkampfzeiten
einen Vorschlag gefunden die Zeit in ein Feld vom Typ Long abzulegen. Beim
Formular müßte man dann wohl beim Anzeigen immer ein Hilfsfeld zur Anzeige
und Eingabe füllen und bei Verànderung dieses Feldes das Feld im Datensatz
àndern. Außerdem ist eine entsprechende Fehlerbehandlung zu Programmieren.
Die Funktion strHundertstelSekunden wandelt die Zahlen bis 2099999999
(5833:19:59,99) in einen String um.
Nur die Funktion HundertstelSekundenStr versagt bei einen String ab 100
Stunden "100:00:00,00". Trotz intensivem Studium habe ich die Wirkungsweise
nicht ganz verstanden und daher den Fehler nicht gefunden. Ich müßte sie
ganz neu bauen.



Das liegt daran, dass die Funktion immer nur Zahlenpaare verarbeitet, und
100 sind nun mal 3 Stellen.

Hat jemand einen Lösungsvorschlag



In dieser Funktion duerfte das etwas aufwaendig werden.

oder ein Beispiel zur Lösung des Problems
Zeiten mit Hunderstelsekunden zu verwalten?



Ich hab mal auf die Schnelle was runtergetippt:

Public Function Hundredth2String(strTime As String) As String
Dim lngResult As Long
Dim strVal() As String
Dim lngMult() As Long
Dim I As Long

If Len(Nz(strTime)) = 0 Then Exit Function

strVal = Split(Replace(strTime, ",", ":"), ":")
ReDim lngMult(UBound(strVal))

For I = UBound(strVal) To LBound(strVal) Step -1
Select Case UBound(strVal) - I
Case 0
lngMult(I) = 1
Case 1
lngMult(I) = 100
Case 2
lngMult(I) = 6000
Case 3
lngMult(I) = 360000
End Select
Next I
For I = LBound(strVal) To UBound(strVal)
lngResult = lngResult + Val(strVal(I)) * lngMult(I)
Next I
Hundredth2String = Str(lngResult)
End Function

Die Funktion zerlegt das Zeit-Literal in seine Bestandteile und arbeitet
auch, wenn nur Minuten oder Sekunden etc. angegeben werden. Sie erwartet
Dezimalkomma und Doppelpunkt als Trennzeichen und gibt einen String
zurueck. Robust getestet ist sie zwar nicht, aber folgende Beispiele
funktionieren:

? Hundredth2String("100:00:00,01")
36000001
? Hundredth2String("1:23,45")
8345
? Hundredth2String(",1")
1
? Hundredth2String(",01")
1
? Hundredth2String(",10")
10

HTH - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen