کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

جمع ساعات در اکسس



برای جمع ساعات ذخیره شده در جدول اکسس می طلبد که از 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


60\60=1
60 mod 60=0

0 mod 0 or 0\0=undefined and raise error !!!


در لینک زیر میتوانید بجای تابع Len از عبارات بالا استفاده کنید در صحت مقادیر بدست آمده 


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: 58
Second (#10:14:13 AM#)
Result: 13
Second (#22/11/2003 10:01:04 PM#)
Result: 4


vba/access/concepts/date-time/calculate-elapsed-time




نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد