تقييم الموضوع :
  • 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
سورس كود برنامج محاسبة ومبيعات احترافي ومتكامل- قم بالاطلاع على البرنامج 
 مجاناااااا
واتساب 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)
على كل حال ارفع لنا المشروع  او انشئ مشروع صغير يحاكي رسالة الخطأ التي تظهر ونحن نعديل عليه
سورس كود برنامج محاسبة ومبيعات احترافي ومتكامل- قم بالاطلاع على البرنامج 
 مجاناااااا
واتساب 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 ك ب / التحميلات : 8)
سورس كود برنامج محاسبة ومبيعات احترافي ومتكامل- قم بالاطلاع على البرنامج 
 مجاناااااا
واتساب 00963951283515
الرد
تم الشكر بواسطة: ابراهيم ايبو


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ممكن شرح و توضيح لسطر الاتصال غدير الصليحي 12 224 24-11-21, 11:09 AM
آخر رد: سعود
  ممكن مثال على كيفية تعليق فاتورررة tfarejdz 4 273 22-11-21, 02:10 AM
آخر رد: Taha Okla
  ممكن شرح اضافة مشغل mpv بداخل الفورم masport tv 6 344 19-11-21, 03:34 AM
آخر رد: معاند الحظ
  معادلة عد كلمة معينة داخل اكثر من تكست بوكس ابو العلاء 11 741 14-11-21, 03:47 PM
آخر رد: kebboud
  [VB.NET] اجراء العمليات الحسابية داخل خلية داتا غريد فيو العواد الصغير 3 1,456 14-11-21, 03:15 PM
آخر رد: walkady
  [سؤال] ممكن شرح او رابط افضل طرق عرض البيانات في الداتاجريد و التعامل معها غدير الصليحي 1 173 12-11-21, 08:15 PM
آخر رد: سعود
  ممكن حل في عمل احصائيات مربوطة access crazykinko 9 274 11-11-21, 01:59 PM
آخر رد: crazykinko
  [VB.NET] رجاء اريد كود فيجوال بحث عن ملف في كمبيوتر داخل فورم jam3h 4 209 10-11-21, 02:54 PM
آخر رد: Anas Mahmoud
  احتاج مساعدة في التعديل على كود شغال تمام في wpf اما winform يظهر مشكل farfour 3 238 10-11-21, 12:27 AM
آخر رد: mrfenix93
  كيفية البحث عن رقم داخل حقل في الجدول عبدالكريم برشدان 6 320 03-11-21, 09:01 PM
آخر رد: عبدالكريم برشدان

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


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