26-07-21, 09:47 PM
(26-07-21, 01:54 PM)ابو انس كتب : المشكلة الاساسية تكمن في معمارية البرنامج الخاص بكبارك الله فيك وجزاك الله الف خيرا
ان سبب ان المشكلة محلولة على برنامج الاستاذ ابراهيم ايبو ولكن لا يتم حل المشكلة على برنامجك هو التالي
في البرنامج الذي بعثه الاستاذ ابراهيم هناك اعمدة تم اعدادها مسبقا في الداتا جريد فيو
اما في برنامجك الداتا جريد فيو في الاصل فارغة لا تحتوي اعمدة ولكن انت استخدمت الطريقة DGV.DataSource = dt وبالتالي تم تعبئة الداتا جريد فيو بجميع الاعمدة والصفوف الموجود داخل dt والتي هي داتا تيبل
عند التعامل مع داتا جريد فيو فإنه نجد بعص الفوارق بطريقة كتابة الكود بين الحالتين حيث الحالة الاولى ان يكون الجريد فيو يحتوي اعمدة والحالة الثانية لايحتوي اعمدة ولكن يتم تعبئته بالعمدة من داتا تابل
ان الحالة الثانية هي مناسبة وتم تصميمها بالنسبة لجريد فيو سيعرض لنا بيانات للقراءة فقط ولن يتم التغيير اليدوي عليها (مثل التقارير)
اما في حالتك انت لديك فاتورة وستدخل فيها بيانات فكان الافضل لك من الناحية البرمجية ان تتبع طريقة الادخال المبق للاعمدة
ولاثبات صحة كلامي قم بالتعديل على مثال الاستاذ ابراهيم ايبو وذلك بحذف جميع الاعمدة
ثم في حدث load للفورم قم بانشاء داتا تيبل واضف لها برمجيا بعض الاعمدة والصفوف
ثم شغل البرنامج وحاول ادخال ارقام سيظهر لك خطأ
على كل حال اذا كنت تريد متابعة العمل بهذه الطريقة السر بحل المشكلة يكون في tostring
السطر البرمجي الذي فيه خطأ ويكون شكله هكذا DGV.CurrentRow.Cells(1).Value
اجعله هكذا DGV.CurrentRow.Cells(1).Value.ToString
او في بعض الاحيان هكذا DGV.CurrentRow.Cells(1).ToString
انا جربت طريقتك زي ماقلت بان وضعت Tostring
في الفورم انا عملت عملية ضرب
T3=T1*T2
حيث
T3=DGV.CurrentRow.Cells(7).Value
T2=DGV.CurrentRow.Cells(2).Value)
T1= DGV.CurrentRow.Cells(6).Value
وعندما اجعل قيمة
DGV.CurrentRow.Cells(7).Value.Tostring= T3
تظهر رسالة خطاء
