تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ممكن حل لمشكلة التعديل داخل DGv
#1
السلام عليكم
ممكن حل لمشكلة التعديل داخل الداتا قرد فيو  داخل فورم فاتورة بيع
حيت عند التعديل داخل الداتا قرد فيو لا تحسب العمليات الحسابية متلا
حسب الصورة المرفقة

عند تغير الكمية المباعة من 10 الي 20 لازم حساب صافي الجمهور واجمالي الشراء من خلال  الاجراء         SaleCalcu()
الكود
PHP كود :
Public Sub SaleCalcu()
 
       Dim t1 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(6).ValueThen
            t1 
0
        Else
            t1 
Val(DGV.CurrentRow.Cells(6).Value)
 
       End If
 
       Dim T2 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(2).ValueThen
            T2 
0
        Else
            T2 
Val(DGV.CurrentRow.Cells(2).Value)
 
       End If
 
       Dim T3 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(7).ValueThen
            T3 
0
        Else
            T3 
Val(DGV.CurrentRow.Cells(7).Value)
 
       End If
 
       Dim T4 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(8).ValueThen
            T4 
0
        Else
            T4 
Val(DGV.CurrentRow.Cells(8).Value)
 
       End If
 
       Dim T5 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(9).ValueThen
            T5 
0
        Else
            T5 
Val(DGV.CurrentRow.Cells(9).Value)
 
       End If
 
       Dim t6 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(10).ValueThen
            t6 
0
        Else
            t6 
Val(DGV.CurrentRow.Cells(10).Value)
 
       End If
 
       Dim t7 As Double
        If IsNothing
(DGV.CurrentRowOrElse IsNothing(DGV.CurrentRow.Cells(12).ValueThen
            t7 
0
        Else
            t7 
Val(DGV.CurrentRow.Cells(12).Value)
 
       End If
 
       '----- اجمالي الجمهور------
        ' 
total qty*price
        
'7=6*2
        T3 = t1 * T2
        '
---اجمالي الشراء-----
 
       ' totalB = total-(total*discound)
        T5 = T3 - ((T3 * T4) / 100)
        '
------قيمة الربح---------
 
       'Eran= = total- totalb
        '
12=8-11
        t6 
T3 T5
        Dim totl
totlBcoutErnPerc As Double
        For i 
As Integer 0 To DGV.Rows.Count 1
            totl 
totl Val(DGV(9DGV.Rows(i).Index).Value)
 
           totlB totlB Val(DGV(11DGV.Rows(i).Index).Value)
 
           Ern totl totlB
            cout 
DGV.Rows.Count
            Perc 
= (- (totlB totl)) * 100
        Next
        SaleTotalG
.Text totl
        SaleTotalS
.Text totlB
        SaleItemCount
.Text cout
        SaleEran
.Text Ern
        SaleEranPercent
.Text Math.Round(Perc2

 و وضعت الدالة SaleCalcu
داخل DGV EndEdit

PHP كود :
Private Sub DGV_CellEndEdit(sender As ObjectAs DataGridViewCellEventArgsHandles DGV.CellEndEdit
        SaleCalcu
()

 
   End Sub 


ياريت لو في حل او هناك حطاء في كتابة الكود اخباري
الرد }}}
تم الشكر بواسطة: asemshahen5 , نيمو
#2
السلام عليكم ورحمة الله وبركاته
اخي الخطأ كوجود في القيم المسندة الى المتغيرات T1,T2 >>>> الخ
بالنسبة للعمليات الحسابية هذا شأنك 
لاخظ هذا الكود هو لعملية ضرب T1 * T2 والنتيجة في T3 
كود :
Public Sub SaleCalcu()
       Dim t1, t2, t3 As Double
       If IsNothing(DGV.CurrentRow) OrElse IsNothing(DGV.CurrentRow.Cells(6).Value) Then
           t1 = 0
       Else
           t1 = Convert.ToDouble(Val(DGV.CurrentRow.Cells(6).Value))
       End If

       If IsNothing(DGV.CurrentRow) OrElse IsNothing(DGV.CurrentRow.Cells(2).Value) Then
           t2 = 0
       Else
           t2 = Convert.ToDouble(Val(DGV.CurrentRow.Cells(2).Value))

       End If

       If IsNothing(DGV.CurrentRow) OrElse IsNothing(DGV.CurrentRow.Cells(7).Value) Then
           t3 = 0
       Else
           t3 = t1 * t2

       End If
       DGV.CurrentRow.Cells(7).Value = t3
       
       
     
   End Sub
وقس على ذلك بقية الحقول اتمنى ان تكون الفكرة واضحة
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: asemshahen5 , نيمو , اسامه الهرماوي
#3
(25-07-21, 08:32 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الخطأ كوجود في القيم المسندة الى المتغيرات T1,T2 >>>> الخ
بالنسبة للعمليات الحسابية هذا شأنك 
لاخظ هذا الكود هو لعملية ضرب T1 * T2 والنتيجة في T3 
كود :
Public Sub SaleCalcu()
       Dim t1, t2, t3 As Double
       If IsNothing(DGV.CurrentRow) OrElse IsNothing(DGV.CurrentRow.Cells(6).Value) Then
           t1 = 0
       Else
           t1 = Convert.ToDouble(Val(DGV.CurrentRow.Cells(6).Value))
       End If

       If IsNothing(DGV.CurrentRow) OrElse IsNothing(DGV.CurrentRow.Cells(2).Value) Then
           t2 = 0
       Else
           t2 = Convert.ToDouble(Val(DGV.CurrentRow.Cells(2).Value))

       End If

       If IsNothing(DGV.CurrentRow) OrElse IsNothing(DGV.CurrentRow.Cells(7).Value) Then
           t3 = 0
       Else
           t3 = t1 * t2

       End If
       DGV.CurrentRow.Cells(7).Value = t3
       
       
     
   End Sub
وقس على ذلك بقية الحقول اتمنى ان تكون الفكرة واضحة

اخي الكريم مشكور علي الرد
جربت الكود الخاص بيك وظهرت معايا المشكلة الموضحة بالصورة
الرد }}}
تم الشكر بواسطة: asemshahen5
#4
السلام عليكم 
اخي الكريم حتى تتضح لك الامور
هذا مثال لداتا غرايد فيها 3 اعمدة  العدد الاول العدد الثاني والمجموع


الملفات المرفقة
.zip   Ofealas.zip (الحجم : 94.27 ك ب / التحميلات : 19)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: ابو انس , asemshahen5 , نيمو , اسامه الهرماوي
#5
(25-07-21, 09:28 PM)ابراهيم ايبو كتب : السلام عليكم 
اخي الكريم حتى تتضح لك الامور
هذا مثال لداتا غرايد فيها 3 اعمدة  العدد الاول العدد الثاني والمجموع

اخي الكريم مشكور كل الشكر
نزلت الفورم التجريبي وشغال بس عند تطبيقه علي الفورم الاصلي تظهر نفس الخطاء المذكور اعلاه
Object  refrence not set to an instance...etc
الرد }}}
تم الشكر بواسطة: ابو انس , asemshahen5
#6
المشكلة الاساسية تكمن في معمارية البرنامج الخاص بك
ان سبب ان المشكلة محلولة على برنامج الاستاذ ابراهيم ايبو ولكن لا يتم حل المشكلة على برنامجك هو التالي
في البرنامج الذي بعثه الاستاذ ابراهيم هناك اعمدة تم اعدادها مسبقا في الداتا جريد فيو
اما في برنامجك الداتا جريد فيو  في الاصل فارغة لا تحتوي اعمدة ولكن انت استخدمت الطريقة    DGV.DataSource = dt    وبالتالي تم تعبئة الداتا جريد فيو بجميع الاعمدة والصفوف الموجود داخل dt والتي هي داتا تيبل

عند التعامل مع داتا جريد فيو فإنه نجد بعص الفوارق بطريقة كتابة الكود  بين الحالتين حيث الحالة الاولى ان يكون الجريد فيو يحتوي اعمدة والحالة الثانية لايحتوي اعمدة ولكن يتم تعبئته بالعمدة من داتا تابل

ان الحالة الثانية هي مناسبة وتم تصميمها بالنسبة لجريد فيو سيعرض لنا بيانات للقراءة فقط ولن يتم التغيير اليدوي عليها (مثل التقارير)
اما في حالتك انت لديك فاتورة وستدخل فيها بيانات فكان الافضل لك من الناحية البرمجية ان تتبع طريقة الادخال المبق للاعمدة

ولاثبات صحة كلامي قم بالتعديل على مثال الاستاذ ابراهيم ايبو وذلك بحذف جميع الاعمدة
ثم في حدث load للفورم قم بانشاء داتا تيبل واضف لها برمجيا بعض الاعمدة والصفوف
ثم شغل البرنامج وحاول ادخال ارقام سيظهر لك خطأ

على كل حال اذا كنت تريد متابعة العمل بهذه الطريقة السر بحل المشكلة يكون في tostring    
السطر البرمجي الذي فيه خطأ ويكون شكله هكذا DGV.CurrentRow.Cells(1).Value
اجعله هكذا DGV.CurrentRow.Cells(1).Value.ToString
او في بعض الاحيان هكذا DGV.CurrentRow.Cells(1).ToString
سورس كود برنامج محاسبة ومبيعات احترافي  -  سورس كود تطبيق ارسال رصيد من الجوال B4A
سورس كود تطبيق مبيعات للجوال
تيليجرام   Abo_anas_kahwaji@
واتساب 00963951283515
الرد }}}
تم الشكر بواسطة: asemshahen5 , نيمو , ابراهيم ايبو
#7
(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
تظهر رسالة خطاء
الرد }}}
تم الشكر بواسطة:
#8
(26-07-21, 09:47 PM)Ofealas كتب :
(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
تظهر رسالة خطاء

لا يجب ان تظهر رسالة خطأ .. كما انك لم تذكر لنا ما هي الرسالة .. ربما تكون نسيت استخدام val
t3=val(DGV.CurrentRow.Cells(7).Value)
على كل حال ارفع لنا المشروع  او انشئ مشروع صغير يحاكي رسالة الخطأ التي تظهر ونحن نعديل عليه
سورس كود برنامج محاسبة ومبيعات احترافي  -  سورس كود تطبيق ارسال رصيد من الجوال B4A
سورس كود تطبيق مبيعات للجوال
تيليجرام   Abo_anas_kahwaji@
واتساب 00963951283515
الرد }}}
تم الشكر بواسطة: نيمو , ابراهيم ايبو
#9
(26-07-21, 10:35 PM)ابو انس كتب :
(26-07-21, 09:47 PM)Ofealas كتب :
(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
تظهر رسالة خطاء

لا يجب ان تظهر رسالة خطأ .. كما انك لم تذكر لنا ما هي الرسالة .. ربما تكون نسيت استخدام val
t3=val(DGV.CurrentRow.Cells(7).Value)
على كل حال ارفع لنا المشروع  او انشئ مشروع صغير يحاكي رسالة الخطأ التي تظهر ونحن نعديل عليه

تمام راح ارفع الفورم اللي بيه مشكلة


الملفات المرفقة
.rar   Form1.rar (الحجم : 103.78 ك ب / التحميلات : 5)
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#10
تفضل اخي الفورم في المرفقات
على فكرة انت معدل على المشروع صح وضايف اعمدة ولكن نسيت امور مهمة
عكل حال الفورم في المرفقات يظهر ما اردته في مشاركتك الاولى في الاعلى وبدون ظهور خطأ


الملفات المرفقة
.rar   Form1.rar (الحجم : 132.5 ك ب / التحميلات : 11)
سورس كود برنامج محاسبة ومبيعات احترافي  -  سورس كود تطبيق ارسال رصيد من الجوال B4A
سورس كود تطبيق مبيعات للجوال
تيليجرام   Abo_anas_kahwaji@
واتساب 00963951283515
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ارجو التعديل على الدالة المرفقة - الدالة تعيد الرقم -1 new_programer 4 91 20-03-24, 01:18 PM
آخر رد: تركي الحلواني
  ممكن حل المشكلة فى الكود التالي - من مشاركة استاذنا القدير / عبدالله الدوسري new_programer 4 169 02-03-24, 07:36 PM
آخر رد: new_programer
Sad ممكن حل لهذا المشكل melad2002 0 240 30-01-24, 08:01 PM
آخر رد: melad2002
  ممكن استفسار عن m3u8 malekmohamed155 0 232 20-01-24, 07:47 PM
آخر رد: malekmohamed155
  [VB.NET] مساعدة في استدعاء البيانات معينه من form الأول إلى form 2 بدون التعديل loay775 2 275 18-01-24, 05:04 PM
آخر رد: loay775
  [سؤال] كيفية انشاء فورم داخل مشروعى عاصم النجار 2 305 05-01-24, 12:36 AM
آخر رد: HALIM ELEULMA
  حماية عمود داخل ورقة الاكسل العيدروس 3 190 05-01-24, 12:21 AM
آخر رد: HALIM ELEULMA
  ممكن تعديل في كود التفقيط للارقام melad2002 2 334 01-01-24, 08:47 PM
آخر رد: melad2002
  [VB.NET] كود التعديل Abdellatif 6 396 21-12-23, 02:01 PM
آخر رد: Abdellatif
  [VB.NET] السلام عليكم ممكن مساعدة اخوان احتاج يكون تسجيل الدخول textbox1 + textbox2 Coder_iraqii 4 400 18-12-23, 06:46 PM
آخر رد: Kamil

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم