Toon posts:

[VBA in ACCESS] Rekenen met tiendes van seconden

Pagina: 1
Acties:
  • 513 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Voor een sportwedstrijd ben ik een tijdregistratieprogramma aan het maken in Access. Niet onbelangrijk om bij dit programma is het om ook tijd te registreren. Daar heb ik gelijk een probleem. Access heeft zelf al mooie datum en tijds notaties maar die gaan niet verder dan secondes terwijl ik ook tiendes van secondes wil kunnen registreren. Ik wil starttijden (bv 01:26:30:00, 1 uur, 26 minuten, 30 seconden en nul tiendes van seconden) aftrekken van eindtijden en er een gereden tijd mee berekenen. Later moet er dan ook nog een gemiddelde van berekend worden.

Aangezien ik geen datum/tijd veld kan gebruiken moet ik een nummeriek of tekst gegevenstype gebruiken: 01.26.30.00 - 01.43.29.33 gaat echter niet. Ik heb geen functies gevonden in VBA die hiermee kunnen rekenen. Heb al op vele fora gezocht, gegoogled en de helpfunctie geraadpleegt maar zonder resultaat.

Enige denkbare oplossing voor mij is rekenen als op de basisschool:

1e + 2e karakter x 60 en dan optellen bij het 3e en 4e karakter.
3e en 4e karakter x 60 en dan optellen bij het 5e en 6e karakter.
5e en 6e karakter x 100 en optellen bij het 7e en 8e karakter.

Dan heb je een totaal aantal tiendes van seconden waar je dan mee kan verder rekenen met de finishtijd en dan weer alles terug rekenen.

Volgens mij is dit een manier waarop je eruit kan komen maar kan me niet voorstellen dat er niets makkelijkers bestaat. Of is een datum/tijd veld zo aan te passen dat ik die kan gebruiken?

Kan iemand mij even een duw geven in de goede richting?

[ Voor 5% gewijzigd door Verwijderd op 05-01-2007 16:45 ]


Verwijderd

Topicstarter
Het aanpassen van het invoermasker haalt ook weinig uit. Wanneer je dan een tijd in wil voeren zegt hij dat de max lengte is overschreven.

Het mag trouwens ook op 1 tiende van een seconde eindigen: uu:mm:ss:t/s

  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
Verwijderd schreef op vrijdag 05 januari 2007 @ 18:52:
Het aanpassen van het invoermasker haalt ook weinig uit. Wanneer je dan een tijd in wil voeren zegt hij dat de max lengte is overschreven.

Het mag trouwens ook op 1 tiende van een seconde eindigen: uu:mm:ss:t/s
Ik heb dit gevonden wat betreft het weergeven van milliseconden bij tijden in elk geval:

Visual Basic:
1
2
3
Public Function MyTime() As String
  MyTime = Format(Now, "dd-MMM-yyyy HH:nn:ss") & "." & Right(Format(Timer, "#0.00"), 2)
End Function


je kunt dit natuurlijk ook omkeren en je string uit het textveld afknippen, zodat je het linkerdeel als tijd input en het rechterdeel doorrekent en weer er bij op telt.

Verwijderd

Topicstarter
OK, ik ben niet ontzettend handig met access dus heb eerst ff moeten uitzoeken wat alle functies in deze functie nu precies doen en hoe ik ze dan van toepassing kan laten zijn op de mijn situatie.

Van wat ik ervan begrijp maakt het rechtergedeelte er tiendes bij maar ik zie niet waar precies mij dit kan helpen. Deze functie levert de huidige datum + tijd inc tiendes van seconden. Maar dat is juist hetgeen wat ik zelf al zou kunnen invoeren. Alleen weet ik niet hoe ik er dan mee moet rekenen.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Afaik zal het idd handwerk moeten worden, oftwel je zult twee VBA functies moeten schrijven: een die een getal omrekent naar een tekst in het formaat 'hh:mm:ss,s' en v.v.

Dan heb je nog het probleem hoe je het op gaat slaan in de db. Voor de hand ligt het als een getal, maar dan heb je twee tekstvakken nodig op je formulier: een voor de weergave en een voor het invullen. Makkelijker lijkt het dan om de tijd gewoon als string op te slaan en voor het berekenen en valideren idd eigen functies te gebruiken.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Bij het opslaan kies ik dan voor twee velden per tijd: 1 om het in te voeren (starttijd/eindtijd) of weer te geven (gereden tijd/ gem tijd) en het tweede veld om het op te slaan (bv het totaal aantal miliseconden waar ik dus mee zou gaan rekenen).

Dit wordt nog een aardig lastig karwei en stiekem hoop ik dat iemand nog een briljant idee krijgt waarmee ik dit probleem wat subtieler aan kan pakken

Verwijderd

nee, je zit vast aan een vba-conversie met een keuze tussen tekst, integer of floating point velden. alleen in een excel werkblad is het mogelijk tienden en hondersten af te beelden en er rechtstreeks mee te rekenen.
Pagina: 1