منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
جمع الوقت الموجود في عمود في الداتاقريد فيو - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : جمع الوقت الموجود في عمود في الداتاقريد فيو (/showthread.php?tid=34416)



جمع الوقت الموجود في عمود في الداتاقريد فيو - جيولوجي مبتدئ - 22-04-20

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


التحويل من السلسلة "" إلى النوع '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











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

دمتم بود


RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - ابراهيم ايبو - 22-04-20

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


RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - جيولوجي مبتدئ - 22-04-20

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

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

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

لك جزيل الشكر
دمت بود


RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - WaeLx - 22-04-20

(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











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

دمتم بود


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


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

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


RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - aljzazy - 22-04-20

جرب هذا الكود

كود :
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  




RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - جيولوجي مبتدئ - 22-04-20

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



RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - ابراهيم ايبو - 23-04-20

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

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


RE: جمع الوقت الموجود في عمود في الداتاقريد فيو - جيولوجي مبتدئ - 24-04-20

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

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

 الله يبارك فيك تم الحل بفضل جهودكم