منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] عمل تنبيه بتاريخ الصلاحية - نسخة قابلة للطباعة

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

الصفحات: 1 2


عمل تنبيه بتاريخ الصلاحية - Moham - 06-09-20

السلام عليكم اخوان 
انا عندي برنامج ادارة منتجات وعملت في تنبيه للمنتجات الي تقارب على الانتهاء بكم يوم من خلال تلوين الصف للمنتج في الداتا كرد فيو
بس لما اغلق الفورمه وانتقل لفورمه تانية وارجع افتح الفورمه من جديد يختفي اللون الي عاملته للخلايا 
ياريت اذا في حدا بيعرف الحل يجاوبني وبكون ممنونه كتير منكم...


RE: عمل تنبيه بتاريخ الصلاحية - Anas Mahmoud - 06-09-20

طيب كيف لنا ان نعرف كيف قمت بتلوين الخلايا ؟ اين وضعت الكود ؟ ما هو الكود تحديدا ؟


RE: عمل تنبيه بتاريخ الصلاحية - Moham - 06-09-20

(06-09-20, 10:39 PM)Anas Mahmoud كتب : طيب كيف لنا ان نعرف كيف قمت بتلوين الخلايا ؟ اين وضعت الكود ؟ ما هو الكود تحديدا ؟

الكود انا خليتو في ال load form 
وطبعا العمود الي في التاريخ هو العمود الثاني من الداتا كرد فيو برمجيا حيكون رقمه (1)
اذا كان المنتج منتهي الصلاحية حيكون لونه أورنج اما اذا باقي له 31 يوم حيكون لونه بلاخضر
وقارنت تاريخ الصلاحية الموجود بلجدول مع تاريخ اليوم
وهذا هو الكود :-
PHP كود :
Dim a As Date Date.Today
        For i 
As Integer 0 To DataGridView.RowCount 1
            If DataGridView
(1i).Value <= a Then
                DataGridView
.Rows(i).DefaultCellStyle.BackColor Color.Orange
            End 
If
 
       Next
        Dim b 
As Date Date.Today.Date.AddDays(31)
 
       For i As Integer 0 To DataGridView.RowCount 1
            If DataGridView
(1i).Value And DataGridView(1i).Value <= b Then
                DataGridView
.Rows(i).DefaultCellStyle.BackColor Color.Green
            End 
If
 
       Next 



RE: عمل تنبيه بتاريخ الصلاحية - Anas Mahmoud - 06-09-20

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


RE: عمل تنبيه بتاريخ الصلاحية - Moham - 06-09-20

(06-09-20, 10:59 PM)Anas Mahmoud كتب : هل تقوم بعد هذا الكود في الفورم لود بملئ الداتا جريد فيو مرة اخرى ؟
ربما المشكلة ان بعد تنفيذ كود التلوين تمسح الخانات وتضيفها من جديد فيضيع التلوين

نعم انا كاتبه كود ملئ الداتا جرد فيو وهذا الكود بلform load


RE: عمل تنبيه بتاريخ الصلاحية - Anas Mahmoud - 06-09-20

طيب عليك وضع كود تغيير لون الاصناف في اجراء Sub واستدعائه بعد ملئ الداتا جريد فيو وليس في حدث form.load
هكذا مثلا :

كود :
Sub UpdateColors()
Dim a As Date = Date.Today
       For i As Integer = 0 To DataGridView.RowCount - 1
           If DataGridView(1, i).Value <= a Then
               DataGridView.Rows(i).DefaultCellStyle.BackColor = Color.Orange
           End If
       Next
       Dim b As Date = Date.Today.Date.AddDays(31)
       For i As Integer = 0 To DataGridView.RowCount - 1
           If DataGridView(1, i).Value > a And DataGridView(1, i).Value <= b Then
               DataGridView.Rows(i).DefaultCellStyle.BackColor = Color.Green
           End If
       Next
End Sub

وبعد كل عملية ملئ للداتا جريد فيو تستدعي هذا الاجراء :

كود :
UpdateColors()



RE: عمل تنبيه بتاريخ الصلاحية - Moham - 06-09-20

(06-09-20, 11:21 PM)Anas Mahmoud كتب : طيب عليك وضع كود تغيير لون الاصناف في اجراء Sub واستدعائه بعد ملئ الداتا جريد فيو وليس في حدث form.load
هكذا مثلا :

كود :
Sub UpdateColors()
Dim a As Date = Date.Today
       For i As Integer = 0 To DataGridView.RowCount - 1
           If DataGridView(1, i).Value <= a Then
               DataGridView.Rows(i).DefaultCellStyle.BackColor = Color.Orange
           End If
       Next
       Dim b As Date = Date.Today.Date.AddDays(31)
       For i As Integer = 0 To DataGridView.RowCount - 1
           If DataGridView(1, i).Value > a And DataGridView(1, i).Value <= b Then
               DataGridView.Rows(i).DefaultCellStyle.BackColor = Color.Green
           End If
       Next
End Sub

وبعد كل عملية ملئ للداتا جريد فيو تستدعي هذا الاجراء :

كود :
UpdateColors()

نفس الشي اللون يختفي بثاني مرة افتح الفورم


RE: عمل تنبيه بتاريخ الصلاحية - Hasaneen - 06-09-20

الحل بسيط واستخدمه دايما

ضعي كود التلوين في الحدث CellFormatting للداتاجريد
PHP كود :
   Private Sub DataGridView1_CellFormatting(sender As ObjectAs DataGridViewCellFormattingEventArgsHandles DataGridView1.CellFormatting
        If e
.ColumnIndex And e.Value IsNot Nothing Then

            Dim a 
As Date Date.Today
            If CDate
(e.Value) <= a Then
                sender
.Rows(e.RowIndex).DefaultCellStyle.BackColor Color.Orange
            End 
If

 
           Dim b As Date Date.Today.Date.AddDays(31)
 
           If CDate(e.Value) > And CDate(e.Value) <= b Then
                sender
.Rows(e.RowIndex).DefaultCellStyle.BackColor Color.Green
            End 
If

 
       End If
 
   End Sub 



RE: عمل تنبيه بتاريخ الصلاحية - Moham - 07-09-20

(06-09-20, 11:45 PM)Hasaneen كتب : الحل بسيط واستخدمه دايما

ضعي كود التلوين في الحدث CellFormatting للداتاجريد
PHP كود :
   Private Sub DataGridView1_CellFormatting(sender As ObjectAs DataGridViewCellFormattingEventArgsHandles DataGridView1.CellFormatting
        If e
.ColumnIndex And e.Value IsNot Nothing Then

            Dim a 
As Date Date.Today
            If CDate
(e.Value) <= a Then
                sender
.Rows(e.RowIndex).DefaultCellStyle.BackColor Color.Orange
            End 
If

 
           Dim b As Date Date.Today.Date.AddDays(31)
 
           If CDate(e.Value) > And CDate(e.Value) <= b Then
                sender
.Rows(e.RowIndex).DefaultCellStyle.BackColor Color.Green
            End 
If

 
       End If
 
   End Sub 
شكرا جزيلا لحظرتك تم حل المشكله بنجاح ?
بس اذا ممكن ليش ما عملنا فور لوب هنا اذا ممكن توضيح؟


RE: عمل تنبيه بتاريخ الصلاحية - Hasaneen - 07-09-20

(07-09-20, 12:04 AM)Moham كتب : بس اذا ممكن ليش ما عملنا فور لوب هنا اذا ممكن توضيح؟

لان هذا الحدث بيتنفذ في كل مره عندما تتغير قيمه كل خليه
حاولي تغيري قيمه اي خليه وشوفي شو اللي بيصير

بقصد الخليه رقم 1