تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
جمع الوقت الموجود في عمود في الداتاقريد فيو
#1
 لسلام عليكم ورحمة االله وبركاته
 اخواني كيف يتم جمع الوقت الموجود عمود في الداتاقريدفيو  علماً أني استخدمت الكود الموجود في الأسفل لكن يعمل أحيانا وأحيانا يظهر لي الخطأ  التالي


التحويل من السلسلة "" إلى النوع 'Double' غير صالح.

 



Dim columnIndex As Integer = 8

Dim h, m As Integer

For Each r As DataGridViewRow In Me.DataGridView2.Rows

If Not IsNothing(r.Cells(columnIndex).Value) Then

h += r.Cells(columnIndex).Value.ToString.Split(":")(0)

m += r.Cells(columnIndex).Value.ToString.Split(":")(1)

End if
Next

If m > 59 Then

h += Math.Floor(m / 60)

m = m Mod 60

End If

Dim result As String = String.Format("{0}:{1}", h, m)

Me.TextBox15.Text = result











لكم جزيل الشكر

دمتم بود
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
السلام عليكم ورحمة الله وبركاته
اخي الكريم
الكود صحيح ولالبس فيه 
قد تكون تجمع الوقت (اي الزمن ساعة - دقيقة - ثانية) وربما نظام الساعة 24 هذا ليس له علاقة بجمع الوقت 
والمفروض ان تكون القيم هي حاصل الفرق بين وقت دخول العامل وانصرافه مقدرة بالساعة والدقيقة فقط
بمعنى ان لديك داتا غرايد تظهر اسم ورقم العامل وعمود للحضور  وعمود أخر للانصراف 
والغمود الثالث وهو الذي سيكون حاصل فرق الزمن بين الحضور والانصراف هكذا  3:35 
اي ان العامل قضى وقتا مجموعه 3 ساعات وخمس وثلاثون دقيقة وهو الفرق بين وقت الحضور ووقت الانصراف
هذا العمود ستجمع قيم خلاياه وفق الكود الذي عندك
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , asemshahen5
#3
(22-04-20, 04:41 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم
الكود صحيح ولالبس فيه 
قد تكون تجمع الوقت (اي الزمن ساعة - دقيقة - ثانية) وربما نظام الساعة 24 هذا ليس له علاقة بجمع الوقت 
والمفروض ان تكون القيم هي حاصل الفرق بين وقت دخول العامل وانصرافه مقدرة بالساعة والدقيقة فقط
بمعنى ان لديك داتا غرايد تظهر اسم ورقم العامل وعمود للحضور  وعمود أخر للانصراف 
والغمود الثالث وهو الذي سيكون حاصل فرق الزمن بين الحضور والانصراف هكذا  3:35 
اي ان العامل قضى وقتا مجموعه 3 ساعات وخمس وثلاثون دقيقة وهو الفرق بين وقت الحضور ووقت الانصراف
هذا العمود ستجمع قيم خلاياه وفق الكود الذي عندك

السلام عليكم ورحمة الله وبركاته
شكرا لك لسرعة ردك اخي  

ليس المقصود حساب فرق الزمن بين الحضور والانصراف  المقصود حساب مقدار التأخر للعامل بمعنى يوجد عندي عمودين الأول يسجل وقت حضور العامل  والثاني يسجل مقدار التأخر عن الوقت المحدد يومياً  وهو الساعة  (  07:00   صباحاً )   وإذا تأخر عن الموعد المحدد  مثلاً تأخر 10 دقائق يسجل له  00:10    وإذا لم يحصل تأخر من قبل العامل يسجل له القمية   00:00     وهكذا ............يعني يسجل يومياً ............ الذي أريده في نهاية الشهر يقوم بحساب  مجموع التأخرات للشهر كاملاً ثم يضعها في textbox15
أرجو يكون الشرح واضح

لك جزيل الشكر
دمت بود
الرد }}}
تم الشكر بواسطة: asemshahen5
#4
(22-04-20, 02:41 AM)جيولوجي مبتدئ كتب :
 لسلام عليكم ورحمة االله وبركاته
 اخواني كيف يتم جمع الوقت الموجود عمود في الداتاقريدفيو  علماً أني استخدمت الكود الموجود في الأسفل لكن يعمل أحيانا وأحيانا يظهر لي الخطأ  التالي


التحويل من السلسلة "" إلى النوع 'Double' غير صالح.

 



Dim columnIndex As Integer = 8

Dim h, m As Integer

For Each r As DataGridViewRow In Me.DataGridView2.Rows

If Not IsNothing(r.Cells(columnIndex).Value) Then

h += r.Cells(columnIndex).Value.ToString.Split(":")(0)

m += r.Cells(columnIndex).Value.ToString.Split(":")(1)

End if
Next

If m > 59 Then

h += Math.Floor(m / 60)

m = m Mod 60

End If

Dim result As String = String.Format("{0}:{1}", h, m)

Me.TextBox15.Text = result











لكم جزيل الشكر

دمتم بود


أتوقع أن المشكلة ليست بهذا الكود طالما يعمل أحيانا


رسالة الخطأ معناها أن القيم التي تحاول جمعها، بها قيمة أو أكثر غير قابلة للحساب، بمعني أن تكون حروف أو رموز مثلا أو خانة الساعات مثلا ليست رقمية كأن تكون خالية و ليست أصفار  .. الخ

فعندما تعطيك خطأ، راجع يدويا القيم التي تحاول جمعها ستجد بها خطأ يرجع لكود تسجيل التأخير 
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#5
جرب هذا الكود

كود :
Dim dgvrRow As DataGridViewRow  
       Dim tsSum As TimeSpan  
       Dim tsTemp As TimeSpan          
       TimeSpan.TryParse("00:00:00", tsSum)
       For Each row In datagridview2.rows  
           strTemp = row.Cells(8).Value.ToString  
           If strTemp <> String.Empty Then  
               tsTemp = DateTime.ParseExact(strTemp, "HH,mm,ss", Nothing).TimeOfDay  
               tsSum = tsSum.Add(tsTemp)  
           End If  
       Next  
       TextBox15.Text = tsSum.toString  

الرد }}}
#6
السلام عليكم ورحمة الله وبركاته
شكرا لكم اخواني
سوف اجرب الكود واعطيكم النتائج في أقرب وقت
دمتم بود
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#7
السلام عليكم ورحمة الله وبركاته
في هذا السؤال يوجد توصيف غير كامل بمعنى ان الكود الذي اوردته اخي جيولوجي قلت لك انه صحيح مئة بالمئة لكن يبدو انك غير مقتنع بعد وسأشرح لك
في البدء كودك وطيفته جمع قيم حاصل فرق بين حضور وانصراف 
يعني كل يوم سيتم حساب الدوام من ساعة الحضور الى الانصراف وتكون القيمة الفرق بينهما (وفق كود أخر غير كودك وقد اوردته في المثال
وقيمة الفرق توضع في حقل اسمه وليكن (زمن العمل المؤدى) حسب تاريخ اليوم
وبهذا سيكون لدينا سجلات لكل موطف بعدد ايام الشهر تستدعى بشرط حقل اسم الموطف هنا ستكون الداتا غرايد فيها سجلات الدوام الشهري لموظف واحد 
هنا يأتي دور كودك اخي جيولوجي حيث سيقوم بجمع قيم خلايا العمود الذي اسميناه  (زمن العمل المؤدى) ويضعها في مربع نص او اي مكان أخر تريده

بقي شيء واحد لم انتبه له وهو انك تريد وقت التأخر 
يمكنك فعل ذلك بأن تضع مجموع عدد ساعات الدوام الكلي للشهر وتطرح منها مجموع زمن الدوام المؤدى وبذلك النتيجة تكون زمن التأخر


الملفات المرفقة صورة/صور
   

.zip   CalculateComeGoTime.zip (الحجم : 146.32 ك ب / التحميلات : 108)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#8
(23-04-20, 12:30 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
في هذا السؤال يوجد توصيف غير كامل بمعنى ان الكود الذي اوردته اخي جيولوجي قلت لك انه صحيح مئة بالمئة لكن يبدو انك غير مقتنع بعد وسأشرح لك
في البدء كودك وطيفته جمع قيم حاصل فرق بين حضور وانصراف 
يعني كل يوم سيتم حساب الدوام من ساعة الحضور الى الانصراف وتكون القيمة الفرق بينهما (وفق كود أخر غير كودك وقد اوردته في المثال
وقيمة الفرق توضع في حقل اسمه وليكن (زمن العمل المؤدى) حسب تاريخ اليوم
وبهذا سيكون لدينا سجلات لكل موطف بعدد ايام الشهر تستدعى بشرط حقل اسم الموطف هنا ستكون الداتا غرايد فيها سجلات الدوام الشهري لموظف واحد 
هنا يأتي دور كودك اخي جيولوجي حيث سيقوم بجمع قيم خلايا العمود الذي اسميناه  (زمن العمل المؤدى) ويضعها في مربع نص او اي مكان أخر تريده

بقي شيء واحد لم انتبه له وهو انك تريد وقت التأخر 
يمكنك فعل ذلك بأن تضع مجموع عدد ساعات الدوام الكلي للشهر وتطرح منها مجموع زمن الدوام المؤدى وبذلك النتيجة تكون زمن التأخر

 الله يبارك فيك تم الحل بفضل جهودكم
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مساعدة في حل سؤال بخصةص عرض الوقت عبدالكريم برشدان 2 100 12-04-24, 03:05 PM
آخر رد: عبدالكريم برشدان
Star الوقت المستغرق لكتابه الكلمه سلام و محبه 0 65 02-04-24, 04:44 PM
آخر رد: سلام و محبه
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 162 06-03-24, 07:49 PM
آخر رد: احمد خطاب
  تعديل بيانات عمود DataGridView دفعة واحدة مصمم هاوي 2 198 05-03-24, 08:27 PM
آخر رد: مصمم هاوي
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 239 25-02-24, 11:26 PM
آخر رد: heem1986
  [سؤال] كود اظهار رساله في حال وجود الرقم في اكثر من عمود مبرمج صغير 1 6 406 09-01-24, 01:41 AM
آخر رد: Taha Okla
  حماية عمود داخل ورقة الاكسل العيدروس 3 195 05-01-24, 12:21 AM
آخر رد: HALIM ELEULMA
Question [VB.NET] اسم عمود الأرقام في DataGridView أبو خالد الشكري 6 617 03-12-23, 08:01 AM
آخر رد: أبو خالد الشكري
  طريقة نقل بيانات عمود من جدول إلى جدول اخر Adel27213 4 454 06-11-23, 07:35 AM
آخر رد: justforit
  إخفاء الصفر في عمود معين kebboud 0 299 01-07-23, 03:32 AM
آخر رد: kebboud

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم