كود :
For i As Integer = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(i).Cells(17).Value.ToString = Nothing Then
DataGridView1.Rows(i).Cells("Column18").Value = Now.ToString("dd/MM/yyyy")
End If
Next
'DateTimePicker4.Value = DataGridView1.CurrentRow.Cells(17).Value.ToString
عند الضغط على العرض من الداتا قريد تظهر رسالة (لم يتم تعيين مرجع كائن لمثيل كائن. )
رغم أن الخلية غير فارغة والرقم في الداتا قريد صحيح وما يقابله في قاعدة البيانات هو نفس الرقم العمود والرقم صحيح
رسالة الخطأ "لم يتم تعيين مرجع كائن لمثيل كائن" تعني أن هناك كائنًا معينًا لم يتم تهيئته (تعيينه) بشكل صحيح قبل استخدامه. في الكود الذي قدمته، يمكن أن يكون السبب في هذا الخطأ هو محاولة الوصول إلى قيمة خلية تحتوي على قيمة null أو محاولة تحويل قيمة غير صالحة إلى سلسلة نصية (ToString).
إليك الكود المعدل مع إضافة تحقق من القيمة قبل محاولة الوصول إليها وتحويلها:
PHP كود :
For i As Integer = 0 To DataGridView1.Rows.Count - 1
' تحقق من أن الخلية ليست فارغة وأن لديها قيمة صالحة قبل التحويل إلى سلسلة
If DataGridView1.Rows(i).Cells(17).Value Is Nothing OrElse String.IsNullOrEmpty(DataGridView1.Rows(i).Cells(17).Value.ToString()) Then
DataGridView1.Rows(i).Cells("Column18").Value = Now.ToString("dd/MM/yyyy")
End If
Next
أضفنا الشرط Is Nothing OrElse String.IsNullOrEmpty للتحقق من أن القيمة ليست Nothing قبل محاولة الوصول إليها.
نقاط مهمة:
التحقق من القيم: تأكد من أن الخلية ليست Nothing قبل محاولة الوصول إليها أو تحويلها.
الأسماء الصحيحة للأعمدة: تأكد من أن الاسم "Column18" هو الاسم الصحيح للعمود الذي تريد تحديثه.
إذا استمرت المشكلة، يمكنك إضافة نقطة فحص (breakpoint) للتأكد من قيمة كل خلية عند المرور في الحلقة:
PHP كود :
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Dim cellValue = DataGridView1.Rows(i).Cells(17).Value
If cellValue Is Nothing OrElse String.IsNullOrEmpty(cellValue.ToString()) Then
DataGridView1.Rows(i).Cells("Column18").Value = Now.ToString("dd/MM/yyyy")
End If
Next
بهذا الشكل يمكنك التحقق من قيمة cellValue في كل خطوة من الحلقة لمعرفة ما إذا كانت القيمة Nothing أو فارغة.
إذا كانت المشكلة لا تزال موجودة:
تأكد من أن العمود 17 (أو Cells(17)) يحتوي على البيانات التي تتوقعها وليس فقط في التصميم بل أيضًا عند تشغيل البرنامج.
تأكد من أن البيانات في قاعدة البيانات قد تم جلبها بنجاح إلى DataGridView. قد يكون هناك خطأ في عملية الجلب نفسها.
الحل ممتاز ولم تظهر معي الرسالة رغم وجود خانات فارغة في قاعدة البيانات
ولكن عندي سؤال
عند استخدام التايم بيكر لابد أن تكون الخانة غير فارغة أو يعود البرنامج بخطأ رغم أن الخانات ممكن أن تكون فارغة وممكن لا ليس إلزاميا
وعند الإضافة رغم عدم وجود تاريخ من المفروض أن تكون الخانة فارغة تاخذ تاريخ يوم الادخال وهذا خطأ من المفترض يكون فارغا كيف حل هذه المشكلة
وجزاك الله خيرا وبارك الله فيك