Access – Sumiranje vremenskih intervala

Sumiranje vremenskih intervala ne predstavlja veฤ‡i problem u Accessu, ali sve dotle dok vam ne zatreba sumiranje intervala ฤasova (sati) koji prelaze 24 ฤasa. Pretpostavimo da morate da pratite radne sate za zaposlene u svojoj firmi. Na osnovu tih sumiranih sati formiraฤ‡e se i plata radnika. Kako inaฤe odgovoriti na ovakve i sliฤne potrebe, i uspeลกno sumirati ฤasove?

Pretpostavimo da u tabeli imate dva Date/Time polja, jedno sa nazivom PocVreme i drugo KrajVreme. Najjednostavnije vremenski interval izmeฤ‘u vrednosti ova dva polja moลพete dobiti formulom:


[KrajVreme]-[PocVreme]

Na prvi pogled, Microsoft Access ฤ‡e korektno iskalkulisati rezultat, ฤak iako je ovaj interval veฤ‡i od 24 ฤasa. Ali, rezultat neฤ‡e biti korektno i prikazan. Problem je u tome ลกto Accessovi ugraฤ‘eni formati za vreme nisu dizajnirani da rukuju intervalima veฤ‡im od 24 ฤasa. Ovaj problem moลพete prevaziฤ‡i dizajniranjem korisniฤki definisane funkcije koja ฤ‡e izraฤunatu vrednost korektno prikazati. Jedna takva funkcija moลพe da izgleda ovako:


Function ProtekloVreme(interval As Variant) As String

Dim UKsati As Long,
UKminute As Long,
UKsekunde As Long
Dim dani As Long,
sati As Long,
minute As Long,
sekunde As Long

dani = Int(CSng(interval))
UKsati = Int(CSng(interval * 24))
UKminute = Int(CSng(interval * 1440))
UKsekunde = Int(CSng(interval * 86400))
sati = UKsati Mod 24
minute = UKminute Mod 60
sekunde = UKsekunde Mod 60
If sekunde > 30 Then minute = minute + 1

‘zaokruzivanje

ProtekloVreme = UKsati & ":" & Format(minute "00")
End Function

Interno, Access ฤuva Date/Time vrednosti kao double (decimalne) brojke, gde leva strana decimalnog broja predstavlja datum, a desna vreme smeลกteno kao razlomak 24-ฤasovnog dana. Izraฤunati intervali vremena predstavljaju se na isti naฤin; levo od decimalnog zareza je „broj dana“, a „deo dana“ je na desnoj strani. Kada prikazujete izraฤunatu vrednost koriลกฤ‡enjem time formata, videฤ‡ete samo desnu stranu.

Prethodni programski kod prikazuje funkciju ProtekloVreme. Ovoj funkciji se kao parametar prosleฤ‘uje vremenski interval, a kao rezultat vraฤ‡a se formatirani string koji prikazuje proteklo vreme u formatu [sati:minute], na primer [125:36], ลกto znaฤi da je proteklo sto dvadeset pet ฤasova i trideset ลกest minuta.

Pratite Krstaricu na www.krstarica.com