ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
برای جمع ساعات ذخیره شده در جدول اکسس می طلبد که از Vba استفاده کنید . یک تابع public بنویسید .
نحوه کار بدین صورت است که اول می بایست تک به تک مقادیر h و m و s را بگیرید و با هم جمع بزنید اول از ثانیه شروع بکنید و به اضای هر 60 ثانیه یک عدد به دقیقه اضافه کنید و زمان جمع دقایق می بایست به اضای هر 60 دقیقه یک عدد به ساعت اضافه شود
8:30:15
10:12:30
9:20
در یک کوئری فرضا اختلاف بین دو Time را ذخیره می کنید بنام difftime و یک کوئری دیگر می سازید و عبارت زیر را کپی می کنید البته در تابع زیر تایپ می بایست فرمت date\time باشد وگرنه ارور میدهد یا می بایست date را از تابع حذف کنید.
x : Sum(Total(difftime))
s=15+30=45
m=30+12+20=62
h=8+10+9=27
خارج قسمت با \ بدست می آید فرضا در 60\195 عدد 3 به Minute اضافه میشود و باقیمانده با Mod که طبق عبارت فوق عدد 15 بدست می آید و همان ثانیه است.
45\60=0
195\60=3
45 Mod 60=45
195 Mod 60=15
Use Nz Function
Public Function TotalHours(tm) as date
اگر tm از نوع تکست باشد باید تک تک h ، s و m را با mid Function بگیرید !!! یا تبدیل به فرمت date\time کنید
Dim h,m,s,mm,ss as integer
h=Hour(tm)
m=Minute(tm)
s=Second(tm)
ss=iif(nz(s)\60=0,nz(s),nz(s) mod 60)
If nz(s)\60>0 Then m=m+s\60
mm=iif(nz(m)\60=0,nz(m),nz(m) mod 60)
If nz(m)\60>0 Then h=h+m\60
TotalHours=format$(.....,"Short time")
Exit Function
Second (#10:42:58 PM#)Result: 58Second (#10:14:13 AM#)Result: 13Second (#22/11/2003 10:01:04 PM#)Result: 4
vba/access/concepts/date-time/calculate-elapsed-time