PDA

View Full Version : کمک در ضرب ساعت کارکرد در حقوق ساعتی



mahmoud.golzar
دوشنبه 20 اسفند 1386, 17:03 عصر
سلام خدمت اساتید عزیز کسی میتونه این برنامه رو طوری تغییر بده که تو قسمت جمع ساعت اضافه کار زمان موجود تبدیل به عددی قابل ضرب در حقوق ساعتی بشه؟ مثلا 20:50 تبدیل بشه به 20.83

سنبله کار
چهارشنبه 22 اسفند 1386, 13:32 عصر
برای ارتقای محتوای سایت مشکل رو به جای آوردن فایل مستقیما مطرح کنید.
با توجه به عنوان سوال فکر می کنم پس از تبدیل میزان کارکرد به ثانیه و ضرب اون در حقوق ثانیه ای ( حقوق ساعتی / 3600 ) مشکل حل بشه

bad_boy_2007
چهارشنبه 22 اسفند 1386, 20:13 عصر
سلام خدمت اساتید عزیز کسی میتونه این برنامه رو طوری تغییر بده که تو قسمت جمع ساعت اضافه کار زمان موجود تبدیل به عددی قابل ضرب در حقوق ساعتی بشه؟ مثلا 20:50 تبدیل بشه به 20.83



من برنامه ات رو نگاه کردم ولی مشکل برنامه ات رو متوجه نشدم ، حق با جناب سنبله کار هست بهتره بطور واضح و روشن مشکلت رو تشریح کنی تا اگه این مشکل کسی دیگه ای هم باشه به درد آرشیو برنامه نویسی بخوره .

mahmoud.golzar
چهارشنبه 22 اسفند 1386, 20:43 عصر
دوستان عزیز مثلا شماره پرونده 1 در ماه اسفند جمع کل اضافه کارش 98:20 شده حالا این 20 دقیقه باید بر 60 تقسیم بشه و به 98 اضافه شه که نهایتا 98.33 میشه مشکل من همین جاست که به عددی قابل ضرب تبدیل بشه .
در حالت عادی نمیشه 98:20 رو در عددی ضرب کرد. نمیدونم درست تونستم مطلب رو بگم.

bad_boy_2007
پنج شنبه 23 اسفند 1386, 00:05 صبح
دوستان عزیز مثلا شماره پرونده 1 در ماه اسفند جمع کل اضافه کارش 98:20 شده حالا این 20 دقیقه باید بر 60 تقسیم بشه و به 98 اضافه شه که نهایتا 98.33 میشه مشکل من همین جاست که به عددی قابل ضرب تبدیل بشه .
در حالت عادی نمیشه 98:20 رو در عددی ضرب کرد. نمیدونم درست تونستم مطلب رو بگم.


اگر فیلد تاریه رو بر اساس نوع DateAndTme تعریف کرده باشی نباید مشکلی داشته باشی یه کوئری مشابه کوئری زیر تفاوت زمان تا ساعات 0:0 را بر اساس ثانیه در میاره باقیش هم که دیگه مثل آب خوردنه !!!
مثلا بعد میتونی بر 60 تقسیمش کنی !!!


SELECT DateDiff ("s", test.Field, #0:0#) AS n
FROM Test;


برای اطلاعات بیشتر جهت پارامترهای ورودی تابع DateDiff یه سری به لینک زیر بزن :
http://www.techonthenet.com/access/functions/date/datediff.php

mahmoud.golzar
پنج شنبه 23 اسفند 1386, 07:57 صبح
دوست عزیز همین کاری که گفتید رو کردم ولی جواب نداد اگر امکان داره نمونه رو اصلاح کنید.

bad_boy_2007
پنج شنبه 23 اسفند 1386, 09:17 صبح
دوست عزیز همین کاری که گفتید رو کردم ولی جواب نداد اگر امکان داره نمونه رو اصلاح کنید.



فیلدی که ساعت رو توش ذخیره کردی از چه نوعیه ؟؟؟ رشته ای ؟ یا DateTime ?
اگر از نوع DateTime باشه با توجه به اینکه ما ساعت رو بصورت مثلا 2:22 ذخیره کرده اید تابع فوق تفاوت این ساعات را با ساعت 0:0 بر اساس ثانیه بر میگرداند در مثال فوق باید عدد 8640 را برگرداند . تابع رو تست کردم مشکل نداشت در اولین فرصت نمونه کدی هم میزارم .
در ضمن من در مثال فوق تفاوت ساعت را بر اساس واحد ثانیه محاسبه کردم که این محاسبه بر اساس مقادیر زیر نیز قابل محاسبه است :
سال
روز
ماه
ساعت
دقیقه
ثانیه

نکته خیلی مهم : پس از انجام محاسبات باید Mod (نمیدانم در اکسس چه تابعی این کار را انجام میدهد) را بر اساس تعداد واحد منتخب در طول یک روز محاسبه کنی ، مثلا در یک روز 24*60*60 ثانیه داریم و باقیمانده عدد محاسبه شده از عبارت ِDateDiff را باید بر این عدد تقسیم کنی .
دلیل ، فرض کنید شما ساعت 2:22 را در تاریخ 1/1/2001 در دیتابیس ذخیره کرده اید و تابع ِDateDiff را برای محاسبه تفاوت زمانی قید شده با تاریخ 2/1/2001 ساعت 2:40 دقیقه محاسبه میکنید عدد حاصل از محاسبات روی این دو تاریخ بر اساس دقیقه باید معادل با 24*60 + 18 باشد ، که باقیمانده این عدد بر 24*60 مساوی با 18 است ، یعنی عدد دلخواه شما !!!

bad_boy_2007
پنج شنبه 23 اسفند 1386, 09:32 صبح
البته این نکته رو هم باید درنظر داشته باشی که در برنامه نویسی برای رفتن از یک مبداء به مقصد نهایی بیشمار راه وجود دارد و بعضی از این راهها ممکن است بسیار نامعقول و برخی بسیار سریع و عاقلانه باشد !!!!!
شاید این روشی که من برای پروژه شما پیشنهاد کردم کمی نامعقول باشد بدین جهت اکیدا توصیه میکنم به دنبال توابع محاسبات بر روی DateTime باشید و بهترین راه استفاده کنید نه اولین راه !!!!

bad_boy_2007
پنج شنبه 23 اسفند 1386, 21:54 عصر
این هم یک نمونه امیدوارم مشکلت حل بشه

mahmoud.golzar
جمعه 24 اسفند 1386, 07:53 صبح
دوست عزیز دست شما درد نکنه ولی یه نگاه به لینک زیر بندازید آقا مهدی عزیز زحمت کشیدند این کار رو کردن ولی تابعی که داخل این یکی استفاده کردم با اون فرق میکنه نتونستم مثل لینک زیر درستش کنم .
http://barnamenevis.org/forum/showthread.php?t=93199&highlight=%D8%B3%D8%A7%D8%B9%D8%AA
از کمکتون ممنونم

bad_boy_2007
جمعه 24 اسفند 1386, 09:56 صبح
دوست عزیز دست شما درد نکنه ولی یه نگاه به لینک زیر بندازید آقا مهدی عزیز زحمت کشیدند این کار رو کردن ولی تابعی که داخل این یکی استفاده کردم با اون فرق میکنه نتونستم مثل لینک زیر درستش کنم .
http://barnamenevis.org/forum/showthread.php?t=93199&highlight=%D8%B3%D8%A7%D8%B9%D8%AA
از کمکتون ممنونم

البته دوست من فرمایش شما کاملا درسته هر دو برنامه یک عمل رو انجام میدن ولی اینکه کجا از کدومش استفاده کنی به نیاز شما بستگی داره اگر بخوای روی فرم محاسبات رو انجام بدی برنامه لینک فوق کارایی بهتری داره ولی اگر بخوای محاسباتت رو روی داده های جدول انجام بدی برنامه ای کاربرد داره که با دستورات SQL نوشته شده باشه :لبخندساده:

صبا9841
یک شنبه 26 اسفند 1386, 21:56 عصر
باسلام
به این نکات توجه کن:
1- در جدول "ورود و خروج" فیلدی بیاور که میزان اضافه کار محاسبه شده را برای هر فرد وارد بکنه.مثل روز و ساعت
2- در همان جدول "ورود و خروج" حقوق پایه را در فیلد بالا ضرب کن. با این توضیح که مقدار ساعتش را شما میخواهید
این کارها را باید از داخل سابفرم "ورود و خروج" اعمال بشه
موفق باشید

mahmoud.golzar
دوشنبه 27 اسفند 1386, 05:57 صبح
جناب آقای صبا دست شما درد نکنه ولی من نمی خوام داخل تبیل این تغییرات ذخیره بشه. میخوام پس از لود شدن فرم محاسبات روی فرم انجام بشه.

صبا9841
دوشنبه 27 اسفند 1386, 20:35 عصر
جناب آقای صبا دست شما درد نکنه ولی من نمی خوام داخل تبیل این تغییرات ذخیره بشه. میخوام پس از لود شدن فرم محاسبات روی فرم انجام بشه.
منظورت از روی فرم چیه؟فقط میخوای محاسبه را ببینی؟ خوب بجای فرستادن به تیبل اینکار را بکن.
انجام بده اگر مشکل بود بفرماید.