منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : عمل تنبيه بتاريخ الصلاحية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم اخوان 
انا عندي برنامج ادارة منتجات وعملت في تنبيه للمنتجات الي تقارب على الانتهاء بكم يوم من خلال تلوين الصف للمنتج في الداتا كرد فيو
بس لما اغلق الفورمه وانتقل لفورمه تانية وارجع افتح الفورمه من جديد يختفي اللون الي عاملته للخلايا 
ياريت اذا في حدا بيعرف الحل يجاوبني وبكون ممنونه كتير منكم...
طيب كيف لنا ان نعرف كيف قمت بتلوين الخلايا ؟ اين وضعت الكود ؟ ما هو الكود تحديدا ؟
(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 
هل تقوم بعد هذا الكود في الفورم لود بملئ الداتا جريد فيو مرة اخرى ؟
ربما المشكلة ان بعد تنفيذ كود التلوين تمسح الخانات وتضيفها من جديد فيضيع التلوين
(06-09-20, 10:59 PM)Anas Mahmoud كتب : [ -> ]هل تقوم بعد هذا الكود في الفورم لود بملئ الداتا جريد فيو مرة اخرى ؟
ربما المشكلة ان بعد تنفيذ كود التلوين تمسح الخانات وتضيفها من جديد فيضيع التلوين

نعم انا كاتبه كود ملئ الداتا جرد فيو وهذا الكود بلform load
طيب عليك وضع كود تغيير لون الاصناف في اجراء 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()
(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()

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

ضعي كود التلوين في الحدث 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 
(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 
شكرا جزيلا لحظرتك تم حل المشكله بنجاح ?
بس اذا ممكن ليش ما عملنا فور لوب هنا اذا ممكن توضيح؟
(07-09-20, 12:04 AM)Moham كتب : [ -> ]بس اذا ممكن ليش ما عملنا فور لوب هنا اذا ممكن توضيح؟

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

بقصد الخليه رقم 1
الصفحات : 1 2