PDA

View Full Version : مشکل محاسبه اختلاف بین دو ساعت



hf.farhadi
جمعه 12 فروردین 1390, 01:26 صبح
با سلام خدمت دوستان و اساتید گرامی
من با لطف شما دوستان یه برنامه ای نوشتم و در مراحل پایانی، دقیقاً هنگام تحویل متوجه اشکال برنامه شدم به این صورت که من توی یه کوئری اختلاف بین دو ساعت رو انجام دادم (مربوط به محاسبه ساعت اضافه کاری) ظاهراً مشکلی نداشت تا وقتی که هنگام تست برنامه مثلاً ساعت 22:00 الی 06:00 که شیفت شبکاری را شامل میشود را وارد نمودیم که تازه متوجه شدیم که محاسبات ساعاتی را که از 24:00 به بعد را درست اعمال نمیکند. ولی اگر شروع از ساعت 1:00 بامداد باشد، درست انجام میدهد.جهت روشنتر شدن موضوع نمونه گذاشتم تو کوئری QfrmEzafe ردیف 1 الی 3 را ملاحظه بفرمایین که محاسبه اختلاف ساعت رو غلط محاسبه کرده.(جواب رو تو فیلد MZ_ezafe ملاحظه کنید که درستش به ترتیب باید 2:00 ، 4:00، 8:00 بیاره که به اشتباه 22:00 ،20:00 ، 16:00) به خاطر نیاز فوری همه تالار رو به هم زدم ،متاسفانه چیزی دستگیرم نشد . خواهشاً،لطفاً،بزرگواری کنید زودتر دستم رو بگیرین. جهت اصلاح کمی مهلت گرفتم ولی وقت زیادی ندارم...:ناراحت::افسرده::گریه :

stabesh
جمعه 12 فروردین 1390, 16:42 عصر
با سلام
چون نوع داده date/time یعنی زمان با تاریخو ثبت میکنه این طوری میشه وقتی شما تاریخی مشخص نکنید خودش به معنی یه تاریخ براشه ولی یادم نیست چند تاریخی بود وقتی اختلاف ساعت 6 صبح تا 22 رو حساب میکنه فکر میکنه در یک روز بوده ما همین مشکلو داشتیم
یه راهش اینه که تاریخو هم همراه زمان ذخیره کنید در یک فیلد
راه دیگه اینه که اگه تاریخ ورود در نیمه دوم روز قرار داره و ساعت خروج در نیمه اول روز 12 ساعت از ورود کم کنید و 12 ساعت به خروج اضافه کنید اون وقت اختلافشو بدست بیارید
اگه روش بهتری وجود داره از دوستان خواهش میکنم راهنمایی کنند ما این مشکلو این طوری حل کردیم ولی سرعتش وقتی رکوردها خیلی زیاد باشه کم میشه
با تشکر

hf.farhadi
جمعه 12 فروردین 1390, 23:18 عصر
سلام دوست عزیز ممنون از لطف و عنایت شما
چطور میتونم تاریخ و ساعت رو توی یه فیلد ذخیره کنم در حالی که فرمت Time براش انتخاب کردم .
دوست عزیز خواهشاً اگه میتونی برنامه ضمیمه رو اصلاح کن برام بزارتو این شرایط با توضیحات فکر نکنم بتونم موفق بشم.

stabesh
شنبه 13 فروردین 1390, 06:02 صبح
سلام
اگه از دستگاه برای ورود داده استفاده کنید میتونید تاریخ میلادیو وارد کنید ولی اگه یک شخص داره این کارو میکنه آره منطقی نیست از روش دوم استفاده کردم و کوئریتونو اصلاح کردم ولی فکر کنم رکوردا اگه خیلی زیاد باشه بالای ده هزار تا کند میشه البته در یه سیستمه با سرعت متوسط
فقط یه چک روش انجام بدید چیزی از قلم نیفتاده باشه و تمام حالات ممکنو پوشش بده
موفق باشید

hf.farhadi
شنبه 13 فروردین 1390, 18:56 عصر
با سلام
خیلی بزرگواری کردی ممنون از لطفت

Mehransh30
شنبه 23 تیر 1397, 19:21 عصر
سلام و خسته نباشید خدمت همه.من به یه مشکلی برخوردم تو پروژه محاسبه ساعت کاری پرسنل.اول این که نوع داده ها رو که از تکست باکس میگیره float هستش که بتونم دقیقه رو بگیرم...
اما خب اشکالی که پیش میاد مثلا اگه ساعت رو 9:50 دقیقه بزنم اختلاف رو باید نشون بده 12 ساعت و 10 دقیقه اما خب چون اعشاری هست نشون میده 12.45 ---حالا الان من میخوام بدونم فرمول خاصی هست که بشه درست کرد این قضیرو؟
بحث بعدی استفاده از timespan هستش که هرکدی که توی اینترنت هست اشتباهه و نمیتونم آنالیز کنم این تابع رو تا بتونم کار کنم روش....مثلا کد زیر رو وارد میکنم

DateTime begin = DateTime.Parse(textBox1.Text);
DateTime end = DateTime.Parse(textBox2.Text);
TimeSpan df = end - begin;
var time = df;
textBox3.Text = DateTime.Parse(time.ToString()).ToString("HH:mm");


این ارور میاد : String was not recognized as a valid DateTime.

mosaArabi
شنبه 23 تیر 1397, 22:04 عصر
دوست گرامی اگه شما ورود و خروج را از نوع دیتا تایم بگیرین البته short time در کدری به راحتی ساعت بزرگتر را منهای ساعت کوچکتر کنین خودش اختلاف را نمایش میده . در قسمت فورمت پاسخ کوری عبارتshort time را بنویسید .
با این کار شمل از ساعت 00:01 بامداد تا 23:59 را می تونید از هم اختلاف بگیرین
در خصوص ساعت 9:50 هم میتونین در یک تکس باکس دیگه تعریف کنید("format([sat];"00:00= بعد میتونید ساعت و دقیقه را هم از هم جدا کنید