PDA

View Full Version : مبتدی: جمع ساعات کارکرد افراد



abasi.mohsen
دوشنبه 30 اردیبهشت 1398, 17:25 عصر
سلام
میخواستم بپرسم چطور باید جمع ساعت ورود و خروج یک فرد توی یه شرکت رو حساب کنم مثلا طرف
ساعت 5.45 ورود زده و ساعت 14.10 خروج در کل این شخص 8.25 ساعت کار کرد داشته
یا ساعت 21.50 ورود زده و ساعت 6.10 خروج ممنون میشم راهنمایی کنید با تشکر

davidrobert
چهارشنبه 01 خرداد 1398, 11:07 صبح
من از این کوئری برای زمان ورود و خروج استفاده میکنم ولی فیلد من یکی از نوع Time و تاریخ از نوع Date و تاریخ میلادی میگیرم . و برای اون روز رو حساب میکنم طرف کی ورود و خروج کرده.
کد کوئری
SELECT Tbl_Log_Vorod_V_Khoroj.LVVKH_ID, Tbl_Sex.S_Name + N' ' + Tbl_Users.U_U_Username AS UserName,
(select [dbo].[MakeCompleteShmsiDate](Tbl_Log_Vorod_V_Khoroj.LVVKH_Date , '/')) AS LVVKH_Date, Tbl_Log_Vorod_V_Khoroj.LVVKH_Time_Vord,
Tbl_Log_Vorod_V_Khoroj.LVVKH_Time_Khoroj, CONVERT(varchar(3), DATEDIFF(minute, Tbl_Log_Vorod_V_Khoroj.LVVKH_Time_Vord,
Tbl_Log_Vorod_V_Khoroj.LVVKH_Time_Khoroj) / 60) + ':' + RIGHT('0' + CONVERT(varchar(2), DATEDIFF(minute, Tbl_Log_Vorod_V_Khoroj.LVVKH_Time_Vord,
Tbl_Log_Vorod_V_Khoroj.LVVKH_Time_Khoroj) % 60), 2) AS TotalHours, Tbl_Log_Vorod_V_Khoroj.LVVKH_UserName,
Tbl_Log_Vorod_V_Khoroj.LVVKH_Mahal_Sabt, Tbl_Log_Vorod_V_Khoroj.LVVKH_IP
FROM Tbl_Sex INNER JOIN
Tbl_Users ON Tbl_Sex.S_ID = Tbl_Users.U_Sex INNER JOIN
Tbl_Log_Vorod_V_Khoroj ON Tbl_Users.U_ID = Tbl_Log_Vorod_V_Khoroj.LVVKH_UserName

abasi.mohsen
چهارشنبه 01 خرداد 1398, 21:44 عصر
سلام ممنون از جواب تون ولی من در واقع برای کل ماه یه تکس باکس برای ساعت ورود و یه تکس باکس برای ساعت خروج و یه تکس باکس برای جمع ساعت کارکرد اون روز را طراحی کردم سپس با زدن دکمه ذخیره اطلاعات در بانک ذخیره میشه در پایان ماه جمع کل ساعات کارکرد افراد رو جمع زده و در فیش حقوق شون نشون میده ولی مشکلی که دارم نمیدونم چطور دو تا تکس باکس رو از هم کم کنم :متفکر:

davidrobert
پنج شنبه 02 خرداد 1398, 07:27 صبح
اگه شما یه ساعت ورود برای کار کرد کاربر داشته باشید برای روز جاری یک ساعت خروج هم دارید.
پس کافی هستش ورود بگیرید با خروج که خود دیتابیس مدت زمان که کاربر کار کرده رو میگیره و وقتی شما این دو تا داشته باشید تو هر ورود و خروج سیستم مدت زمان کارکرد و یا همون حضور به شما میده و در آخر کاری که میکنید میاد بازده زمانی یک ماه رو میارید و جمع همه ساعت ها رو انداخته که چقدر در روز سر کار بوده و همه رو با هم جمع میکنید و ضربدر هزینه ساعت کاری میکنید تا هزینه کل به دست بیاد. این کوئری برای بازده زمانی روزانه فقط باشه به کار میاد ولی برای موکل شدن به تاریخ بعدی ایراد داره از ساعت 00:00 امروز به 00:00 فردا موکل بشه درست حساب نمیکنه ولی تو 23:59:00 باشه خوب عمل میکنه چون میخواستم سمت سرور محاسبه بشه از کوئری سمت سرور استفاده کردم ولی احتمال زیاد سمت نرم افزار هم هستش.
مثل این ساعت https://stackoverflow.com/questions/3565750/c-sharp-time-calculations
اگه بخواهی برای چند روز یا روز جاری بدونه مشکل حساب کنه همزمان با ساعت نیاز به تاریخ هم دارید.

محمد رضا فاتحی
پنج شنبه 02 خرداد 1398, 11:52 صبح
از TimeSpan هم می تونید استفاده کنید