تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تحويل عدد ساعات العمل من عشري (٢٫٧٥) الى - "HH:MM" في التقارير - تم الحل
#6
الشكر لله والحمد لله
والحمد لله على كل حال

بخصوص السؤال ابسط ما يمكننى الرد عليه
اعطي لكل ذي حق حقه

بمعنى عندما نتحدث عن شئ كا وقت فيفضل ان يسجل كا وقت
وعندما نتحدث عن شئ كا نص يبقي نص وكذلك الارقام وما غيره

لان اشاهد الكثير خصوصاً فى مراحل التعليم يعتمد على 
جعل الامر نص للاعمدة حتى يرتاح البال

وبما اننا نتحدث عن وقت لعدد الساعات
وليس الوقت الفعلى ولا هو يناسب التاريخ 

لكونه الناتج النهائي من العملية الحسابية لعدد الساعات

باصح الجزء المشير اليه هنا فى هذا

إقتباس :6.40 + 0.60 = 7

مع العلم اننا نتعامل مع الوقت وهو ينتهي عند ٦٠ وليس ١٠٠


وهو غير صحيح لانك بعد جلب عدد الساعات لم تقوم بعملية جمع ولا طرح
واذا قلنا احتمالية يتم عملية الطرح والجمع لاسباب مثل عدد الساعات الاضافية وما شبه

ولكنها كان من الاحق انها تتم فى كود الـ function بهذا السطر 
كود :
          myTime = (stopTime - startTime) + TimeSpan.FromMinutes(60);

والـ 60 هنا يشير الى الدقائق
يعنى لو كان عندك وقت مثل 6:40 فهنا عليك عمل 6*60 + 40
ليصبح الاجمالى هو 400 يضع بدلاً من 60
طيب على الامور الواقع كيفق سيكون الكود

تعال كده على كود الـ function واستبدل القديم بهذا
كود :
       public TimeSpan GetHours(DateTime startTime, DateTime stopTime, int addTime = 0)
       {
           TimeSpan myTime = new TimeSpan();
           myTime = stopTime - startTime;
           myTime = myTime + TimeSpan.FromMinutes(addTime);
           return myTime;
       }

طبعاً مش محتاج الشرح انت ستلاحظ ما تم اضافته
عن الكود فى الرد السابق

الان ناتى على كود الاستخدام فى الحدث
ناتى فى الكود الاول وهو عندما يكون الكود بدون اى اضافات للوقت الرئيسي

سيكون الاستخدام بهذا الشكل
كود :
           TimeSpan GetTime = new TimeSpan();
           DateTime srtTime = Convert.ToDateTime("10:00");
           DateTime stpTime = Convert.ToDateTime("16:40");
           GetTime = GetHours(srtTime, stpTime);

           MessageBox.Show(GetTime.Hours + ":" + GetTime.Minutes);

لو تلاحظ انه لا يوجد اى فرق ولا تغيير عن الكود فى ردى السابق
وعند اختبار الكود ستجد ان عدد الساعات الناتج هو 6:40

طيب لو حبينا نعمل اضافة عدد الساعات والدقائق الاضافية
كل ما عليك فعله هو التالى جلب اجمالى عدد الدقائق من الوقت المطلوب اضافته

ليتم وضعه واستخدامه كالتالى
كود :
           TimeSpan GetTime = new TimeSpan();
           DateTime srtTime = Convert.ToDateTime("10:00");
           DateTime stpTime = Convert.ToDateTime("16:40");
           GetTime = GetHours(srtTime, stpTime, 60);

           MessageBox.Show(GetTime.Hours + ":" + GetTime.Minutes);

بما انك قلت فى الرد السابق +0.60
فلاحظ استخدمت الـ 60 وهى تعنى ساعة كاملة

عند المعينة والاختبار ستجد الناتج بالنهاية هو  7 ساعات و 40 دقيقة 
بدلاً من 6 ساعات و 40 دقيقة

ناتى بالنهاية كيف يتم حفظ القيمة فى قاعدة البيانات
هل استخدم نوع العمود تاريخ ووقت او اختار نص او رقم

طبعاً انا احبب دائماً الاستخدام لما هو يعنى لانه سيفيد وسيسهل الامور كثيراً
خصوصاً فى التقارير قبل الفورم

فعند عمل الحفظ فى قاعدة البيانات بعمود من نوع تاريخ ووقت
فيجب عليك ان تحدد نوع التنسيق لخصائص العمود فاذا كنت تستخدم الـ Access
فان تجعل النوع هو Short Time 
حتى تتجنب مشكلة وجود التاريخ والثواني وكذلك رمز صباحاً ومساءاً

وبكدة ستكون حليت المشكلة تماماً
ويبقي الشئ الاخير عند عرضها فى التقارير وهو ظهور التاريخ مع الوقت لعدد ساعات العمل
كل ما عليك تعدل خصائص الـ Text فى التقارير وتعطي نوع وقت فقط وبكدة تكون انهيت الامر

اعلم ان الشرح كثيراً وقد تحس بمتاهة
بس عيد مرة واتنين قراءة الامر ستوضح الامر كلياً لك وستتعلم منه بامر الله

من السهل ان اعطي رداً بحل يخلصك لما تريد
ولكن العلم ليس من السهل ان تجده فى احد ان يعطيك ايه بدون مقابل

فالحمد لله على كل حال

بناء مشروع بصورة صحيحة
يجعلك فخوراً من نفسك اولاً
ويجعل الامر معك بسيطاً وسهلاً فى التعديل والتطوير به

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: Rabeea Qbaha , wared , wared


الردود في هذا الموضوع
RE: تحويل عدد ساعات العمل من عشري (٢٫٧٥) الى - "HH:MM" في التقارير - تم الحل - بواسطة elgokr - 15-06-19, 10:55 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [C#.NET] مشكل يخص قراءة التقارير في برنامج aziz-ouali 0 557 08-12-23, 06:25 AM
آخر رد: aziz-ouali
  [تم الحل] مشكلة الاتصال بقاعده بيانات SQL على الشبكة maxruined 5 5,175 08-11-23, 01:00 AM
آخر رد: الحزين اليماني
  [C#.NET] تحويل كود ahmed_king2023 2 874 06-06-23, 09:44 AM
آخر رد: fouadhdfouad
  [VB.NET] تحويل كود ahmed_king2023 6 1,318 22-04-23, 11:30 PM
آخر رد: ahmed_king2023
  [C#.NET] القسمة على عدد عشري h2551996 4 892 26-03-23, 01:00 PM
آخر رد: sanyor77
  [C#.NET] تحويل كود الي c# ali_ahmed12 2 834 10-01-23, 03:02 PM
آخر رد: ali_ahmed12
  [C#.NET] تحويل كود الي c# ali_ahmed12 2 940 03-12-22, 03:52 PM
آخر رد: ali_ahmed12
  [VB.NET] تحويل كود الي c# ali_ahmed12 5 1,251 30-11-22, 07:32 PM
آخر رد: ali_ahmed12
  [VB.NET] تحويل كود الي c# ali_ahmed12 0 651 29-11-22, 06:30 PM
آخر رد: ali_ahmed12
  [C#.NET] تحويل كود تالي الي c# ali_ahmed12 5 1,254 17-11-22, 04:25 AM
آخر رد: yaser27

التنقل السريع :


يقوم بقرائة الموضوع: