السلام عليكم ورحمة الله وبركاتة
لدي مجموعة بيانات في الداتا غريد فيو .... منها عمود تاريخ
لدي كود معرفة التواريخ التي ( اقل او اعلى ) من تاريخ اليوم
كود :
'اقل من تاريخ اليوم
For i As Integer = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1(2, i).Value.ToString() <= Date.Now Then
Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Red
End If
Next
طلبي هو .... معرفة التاريخ التي سوف تحل من 1-30 يوم
على سبيل المثال :
تاريخ اليوم هو 1435/7/1
والبيانات هي
1435/7/3
1435/7/30
1435/8/5
1436/2/1
بحيث يحدد لي تواريخ :
1435/7/3
1435/7/30
لانها قريبة من تاريخ اليوم مابين 1 الى 30 يوم
اتمنى ان تكون الفكرة واضحة
وعليكم السلام ورحمة الله وبركاته
عندك حلين :
الحل الأول : جملة استعلام بين تاريخين ،،، التاريخ الأول هو تاريخ اليوم الحالي للجهاز ،،، والتاريخ الثاني تاريخ اليوم الحالي للجهاز + 30 يوم .
سوف يقوم بعرض السجلات فقط المحددة بين التاريخين .
الحل الثاني : عرض جميع السجلات وتمييز السجلات في تلك الفترة بلون مختلف .
في كلا الحالتين ارفق مثالك ليتم التعديل عليه .
توضيح أكثر
بيانات البضائع
1 - توجد بضائع ... أنتهاء تاريخ الصلاحية ..... تم حلة عن طريق الكود بالاعلى .. وجعلت الصف باللون الاحمر
المطلوب
2- معرفة البضائع التي قاربت على أنتهاء صلاحيتها من يوم الى 30 يوم
يعطيك العافية
لاكن ليس قريب لطلبي
تعامل مع الميلادي وبعدها شوف الهجري لاني حين اجرب الاكواد مع الهجري ما ينجح لكن حين حولت تاريخ الجهاز الى ميلادي ضبط الوضع.
هذا الأكواد بعد التعديل لنفس مثالك :
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'اقل من تاريخ اليوم
For i As Integer = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1(1, i).Value.ToString() <= Date.Now.AddDays(-1) Then
Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Red
End If
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' المطلوب
' يحدد على التواريخ القريبة من التاريخ الان بحيث لاتتجاوز عن 30 يوم
For i As Integer = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1(1, i).Value.ToString() < Date.Today.AddDays(-30) Or Me.DataGridView1(1, i).Value.ToString() > Date.Today.AddDays(30) Then
Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Red
End If
Next
End Sub
حريف برمجة ..... يعطيك العافية
مثالك ... يظهر التواريخ التي اصغر من تاريخ اليوم بـ 30 يوم ... وأكبر من تاريخ اليوم ب30 يوم
معناها انة راح يظهر 60 يوم (30 قبل و 30 يوم بعد )
وهذا ليس المطلوب
على العموم وجدت مثال في أحدى مشاركات المنتدى القديم .. وقد عدلت علية فكانت النتيجة 100%
كود :
' التاريخ الحالي
Dim A As Date = Date.Now
' زيادة 30 أيام على التاريخ
Dim B As Date = Date.Now.Date.AddDays(30)
For i As Integer = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1(1, i).Value.ToString() > A And Me.DataGridView1(1, i).Value.ToString() < B Then
Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Green
End If
Next
حريف برمجة مثالك قريب للطلب
لاكن عدلت علية ليصبح
كود :
For i As Integer = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1(1, i).Value.ToString() > Date.Now And Me.DataGridView1(1, i).Value.ToString() < Date.Now.Date.AddDays(30) Then
Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Red
End If
Next