PDA

View Full Version : جمع ساعات اضافه كاري



Amin.del
چهارشنبه 04 مرداد 1391, 14:44 عصر
با سلام خدمت اساتيد محترم بنده برنامه اي دارم كه براي ساعات ورود و خروج و ساعات مرخصي هست .در قسمت جمع ساعات مرخصي وقتي جمع ساعات به 24ساعت ميرسه اگر نيم ساعت اضافه بشه بايد جمع ساعات بشه 24:30 يا مثلا25:40در حالي كه در جمع ساعتي كه من تو ريپورتم دارم ميزنه 00:30 يعني 24 ساعت به بعد رو ار نو شروع ميكنه .اگه كسي هست كمكم كنه ممنونش ميشم.فايل رو پيوست ميكنم.

Abbas Amiri
شنبه 07 مرداد 1391, 23:47 عصر
تابع زیر را دریک ماژول کپی کنید وبه هر متغیر ویا کنترل نسبت دهید:



Function SumTime(tdf As String, fld As String, Optional Criteria As String = "(1)")
Dim rs As Recordset, t
Dim m As Integer, h As Integer
Set rs = CurrentDb.OpenRecordset("SELECT " & fld & " FROM " & tdf & " WHERE " & Criteria)
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
t = Format(rs(0), "hh:mm")
m = m + Right(t, 2)
h = h + Left(CStr(t), 2)
rs.MoveNext
Wend
h = h + Int(m / 60)
m = m Mod 60
SumTime = Format(h & ":" & Format(m, "00"), "hh:mm")
End Function


مثال کلی:

var = SumTime("[TableName]","[FieldName or Combination of Fields]","Conditions")

ودر مورد اشاره شما:

در ControlSource جمع مرخصی ساعتی بنویسید:(لازم به توضیح است بدلیل استفاده ازحروف فارسی جای آرگومانها عوض شده است)

=SumTime("پارسا";"[ساعت رفت]-[ساعت برگشت]")

bemilove
سه شنبه 10 مرداد 1391, 00:45 صبح
از این تاپیک هم می توانید کمک بگیرید.....

http://barnamenevis.org/showthread.php?262597-%D8%AC%D9%85%D8%B9-%D8%AF%D8%B1%D8%B3%D8%A7%D8%B9%D8%A7%D8%AA

Amin.del
سه شنبه 10 مرداد 1391, 14:05 عصر
ودر مورد اشاره شما:

در ControlSource جمع مرخصی ساعتی بنویسید:(لازم به توضیح است بدلیل استفاده ازحروف فارسی جای آرگومانها عوض شده است)

=SumTime("پارسا";"[ساعت رفت]-[ساعت برگشت]")[/QUOTE]
----------------
ازكمك شما سپاسگزارم يه سوال هست اينجا كه اين كد(ماژول) برا 3يا4 تا تيبل مشابه كاربرد داره-اگه ميشه رو نمونه پيوستي اصلاح بفرماييد ممنون ميشم.

Abbas Amiri
سه شنبه 10 مرداد 1391, 17:46 عصر
نمونه شمابادرج موردفوق

Amin.del
سه شنبه 10 مرداد 1391, 18:02 عصر
با سلام و خسته نباشيد.خيلي ممنون آقاي اميري ****آيل اين كد(ماژول) برا 3يا4 تا تيبل مشابه نمونه ذكر شده كاربرد داره

Abbas Amiri
سه شنبه 10 مرداد 1391, 18:07 عصر
بلهبرای هرجدولی که درآن فیلد ساعت وجوددارد ، میتواند استفاده شود ضمن اینکه میتوانید شرط هم بگذارید مثلا از فلان تاریخ تا ...

Amin.del
چهارشنبه 11 مرداد 1391, 17:46 عصر
بلهبرای هرجدولی که درآن فیلد ساعت وجوددارد ، میتواند استفاده شود ضمن اینکه میتوانید شرط هم بگذارید مثلا از فلان تاریخ تا ...-
----------------------------
ضمن تشكر از زحماتتون&&&بيزحمت اگه ميشه طريقه شرط گذاري تاريخ را رو نمونه اصلاح بفرمائيد.
و اينكه اين كد در زماني كه كارمند بخواد يه روز كامل از مرخصي استفاده كنه و از ساعت در آن ركورد استفاده نكنيم ارور ميده اگه كدي باشه كه زماني كه ما از مرخصي ساعتي استفاده نميكنيم بجاي خالي بودن فيلد ساعت (00:00)از عبارت داخل پرانتز استفاد كنه بصورت اتومات.

Amin.del
چهارشنبه 11 مرداد 1391, 17:57 عصر
آقاي اميري لطف شما رو مي طلبه...بصورت كلي به دستوري احتياج دارم كه براي فيلدي كه در يك ركورد خالي ميزازيم يه عبارت مشخصي را قرار بده و اين در صورتي باشه كه ما در اون فيلد رو نخواهيم چيزي بنويسيم.

Abbas Amiri
چهارشنبه 11 مرداد 1391, 18:19 عصر
برای سوال اول در قسمت سوم آرگومانها که اختیاری است میتوانید اضافه کنید:


= SumTime("[TableName]","[FieldName or Combination of Fields]","[date] BETWEEN 13910101 AND 13910131")

وبرای دومی همانطورکه میدانید مقدار 00:00 در داده تاریخ زمان معادل نیمه شب میباشد ، اگر درجاهای دیگر مشکل ایجادنکند میتوانید نوع داده را به تکست تبدیل وDefault Value آنرا "00:00" قراردهید

Amin.del
چهارشنبه 11 مرداد 1391, 18:33 عصر
برای سوال اول در قسمت سوم آرگومانها که اختیاری است میتوانید اضافه کنید:


= SumTime("[TableName]","[FieldName or Combination of Fields]","[date] BETWEEN 13910101 AND 13910131")

وبرای دومی همانطورکه میدانید مقدار 00:00 در داده تاریخ زمان معادل نیمه شب میباشد ، اگر درجاهای دیگر مشکل ایجادنکند میتوانید نوع داده را به تکست تبدیل وDefault Value آنرا "00:00" قراردهید
------------------------------------------------------------------------------------------------------------
عرض شما درست اگه من مقدار Default Value آنرا "00:00" قراربدم باز هم ميتونم موقعي كه از نفر مرخصي استفاده كنه ساعت مورد نظر را وارد كنم.و اينكه اگه نوع داده را به text تغيير بدم نميتونم اختلاف زمان رو بدست بيارم.راه ديگه اي نيست .

Amin.del
چهارشنبه 11 مرداد 1391, 19:24 عصر
دوستان سلام كسي نيست كمك كنه

Abbas Amiri
چهارشنبه 11 مرداد 1391, 21:07 عصر
برای اختلاف زمان میتوانید ازتوابع تبدیل نوع استفاده کنید


var = CDate(CDate(t2) - CDate(t1))