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 StringDim UKsati As Long,
UKminute As Long,
UKsekunde As Long
Dim dani As Long,
sati As Long,
minute As Long,
sekunde As Longdani = 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