11-04-19, 09:26 PM
وعليكم السلام ورحمة الله وبركاته
فى البداية اخى محمد خيري
اجعلني اشرح لك الكود الذى تستخدمه
فى كيفية التعامل معه لان من الواضح انك تستخدم الكود
دون علم ما هو وكيفية الاستخدام
تعال نقول ان لدينا مشروع يحتوى على
TextBox1
واننا نريد ان نطبق عليه اكتر من امر
مثل تفريغه بالبداية ثم اعطاء قيمة جديدة ثم وضع المؤشر عليه
فبطبيعة الحال ابسط ما سيتم كتابته هو
كود :
TextBox1.Clear()
TextBox1.Text = "New String.."
TextBox1.Focus()طيب لو قلت انا مش محتاج اكتب كلمة
TextBox1
دائماً فى كل سطر ويكفيني اكتب بهذا الشكل مباشراً
كود :
.Clear()
.Text = "New String.."
.Focus()عشان يتم الامر ده بيتم استخدام With
ووظيفته هو مضمون او ما يتبع الاداء بحيث كل ما بداخل كود With
فهو يتبع الى TextBox1 لذلك تجد دائماً بداية كل تنفيذ هو . مباشراً
بدون كتابة TextBox1 حتى يتم اغلاق With
طيب الكود سيكون شكله ايه بعد استخدام With
سيكون الكود بهذا الشكلكود :
With TextBox1
.Clear()
.Text = "New String.."
.Focus()
End Withطيب لو حبيت اعمل تحقق من قيمة سيكون بهذا الشكل
كود :
With TextBox1
If .Text = "Old String." Then
.Clear()
.Text = "New String.."
.Focus()
End If
End Withلاحظ كده فى سطر IF انا كتبت مباشراً .Text بدون ان اكتب TextBox1
لان كما قمت بالذكر بالاعلى انا بداخل ما يتبع TextBox1
فاى ما يكتب من تنفيذ فهو يخص فقط TextBox1
طيب ناتى الى الكود الخاص بك
وهو الخطاء الذى وقعت به وهو بهذا السطركود :
TextBox3.Text = .Cells("Birth").Value.ToString()ثم ياليه بالاسفل لنفس السطر وهو
كود :
If DataGridView1.CurrentRow.Cells(2).Value.ToString = "" Then
TextBox3.Text = ""
Else
TextBox3.Text = Format(DataGridView1.CurrentRow.Cells(2).Value, "yyyy/MM/dd")
End Ifانت متخيل انك عملت ايه
فى البداية انت قمت بتعبئة TextBox3 بقيمة التاريخ
ومن ثم قمت باعادة التحقق بالنهاية
اذا كان التاريخ غير موجود فاجعل TextBox3 فارغ
واذا كان يحتوى على تاريخ قم بتعبته بالتاريخ
ومن الصح ان يكون الكود من البداية بهذا الشكل
كود :
If .Cells("Birth").Value.ToString = "" Then
TextBox3.Text = ""
Else
TextBox3.Text = Format(.Cells("Birth").Value, "yyyy/MM/dd")
End Ifلاحظ كده كود التحقق اصبح باى شكل
وحتى الكود بداخل الـ Format
واذا احببنا ان نجعل الامر باسهل وابسط اكثر فيمكنك ان تجعله بهذا الشكل
كود :
TextBox3.Text = IIf(.Cells("Birth").Value.ToString = "", "", Format(.Cells("Birth").Value, "yyyy/MM/dd"))لاحظ ان القيمة نفسها هى التى يتم التحقق منها مباشراً
ليتم تعبئة TextBox3 بالقيمة المطلوبة
طيب خلينا ننظر للكود كيف اصبح بعد ما تم ما بالاعلى
كود :
With DataGridView1.CurrentRow
TextBox1.Text = .Cells("Id").Value.ToString()
TextBox2.Text = .Cells("Name").Value.ToString()
TextBox3.Text = IIf(.Cells("Birth").Value.ToString() = "", "", Format(.Cells("Birth").Value, "yyyy/MM/dd"))
CheckBox1.Checked = .Cells("FirstPrime").Value.ToString()
CheckBox2.Checked = .Cells("SecondPrime").Value.ToString()
End Withطيب ناتى للجزء الخاص بالمشكلة
لظهور تلك الرسالة والسبب
بان القيمة خاصة FirstPrime و SecondPrime فارغة
الامر يمكن حله من خلال طريقتين
الطريقة الاولى وهو تعضيل الاضافة فى اداء الداتا جريد
بحيث اخر سطر الفارغ لم يظهر معك لانك بكلا الاحوال لا تستخدم الاضافة اليدوية
من خلال الموس و لوحة المفاتيح كما لو ان الداتا جريد ملف Excel
الطريقة الثانية ان تجعل الكود بهذا الشكل
كود :
With DataGridView1.CurrentRow
TextBox1.Text = .Cells("Id").Value.ToString()
TextBox2.Text = .Cells("Name").Value.ToString()
TextBox3.Text = IIf(.Cells("Birth").Value.ToString() = "", "", Format(.Cells("Birth").Value, "yyyy/MM/dd"))
If IsNothing(.Cells("FirstPrime").Value) OrElse String.IsNullOrEmpty(.Cells("FirstPrime").Value) Then
CheckBox1.Checked = .Cells("FirstPrime").Value
Else
CheckBox1.Checked = False
End If
If IsNothing(.Cells("SecondPrime").Value) OrElse String.IsNullOrEmpty(.Cells("SecondPrime").Value) Then
CheckBox2.Checked = .Cells("SecondPrime").Value
Else
CheckBox2.Checked = False
End If
End Withوبكده تكون قمت بحل المشكلة
وكذلك معالجة الخطاء بالكود
اتمنى ان يكون الشرح بسيط
وان تكون على استوعاب الان فى كيفية استخدام With
تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى
لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى
لكل من يقوم بالمساهمةفى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية

