منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] تفادي تكرار ادخال نفس العنصر في الداتاغريد فياو و تحديث خلية الكمية و السعر - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] تفادي تكرار ادخال نفس العنصر في الداتاغريد فياو و تحديث خلية الكمية و السعر (/showthread.php?tid=42063)

الصفحات: 1 2


RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - Taha Okla - 01-08-22

هذا التعديل :

كود :
If e.KeyCode = Keys.Enter Then
   If qte_vente.Text = "" Or qte_vente.Text = "0" Then
       MsgBox("أدخل الكمية المطلوبة")
   Else
       For i As Integer = 0 To DGVBill.Rows.Count - 1
           If DGVBill.Rows(i).Cells(1).Value = codebare_vente.Text Then
               DGVBill.Rows(i).Cells(5).Value = Val(DGVBill.Rows(i).Cells(5).Value + Val(qte_vente.Text))
               calcul()
               Exit Sub
           End If
       Next i

       Dim row As DataRow = dt.NewRow
       row(0) = gid()
       row(1) = codebare_vente.Text
       row(2) = designation_vente.Text
       row(3) = unite_vente.Text
       row(4) = pd_vente.Text
       row(5) = qte_vente.Text
       row(6) = ptotal_vente.Text
       dt.Rows.Add(row)
       DGVBill.DataSource = dt
       calcul()
   End If
End If



RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - technomedia - 01-08-22

(01-08-22, 05:51 AM)بالفعل أخي Taha Okla هذا هو الكود المطلوب، لك مني جزيل الشكر ، إن احتجت للديزاين فلا تتردد في السؤال أبدا. كتب :
كود :
  If e.KeyCode = Keys.Enter Then

  If qte_vente.Text = "" Or qte_vente.Text = "0" Then

      MsgBox("أدخل الكمية المطلوبة")
  Else
      For i As Integer = 0 To DGVBill.Rows.Count - 1
          If DGVBill.Rows(i).Cells(1).Value = codebare_vente.Text Then
              DGVBill.Rows(i).Cells(5).Value = Val(DGVBill.Rows(i).Cells(5).Value + Val(qte_vente.Text))
              calcul()
              Exit Sub
          End If
      Next i

      Dim row As DataRow = dt.NewRow
      row(0) = gid()
      row(1) = codebare_vente.Text
      row(2) = designation_vente.Text
      row(3) = unite_vente.Text
      row(4) = pd_vente.Text
      row(5) = qte_vente.Text
      row(6) = ptotal_vente.Text
      dt.Rows.Add(row)
      DGVBill.DataSource = dt
      calcul()
  End If
End If
                     
تنويه: الكود الآن يقوم بادخال البيانات DT الى DGV  وفي حال وجد بأن العنصر موجود مسبقا ، يقوم بتعديل الكمية فقط و إضافة الكمية الجديدة الموجودة في خانة التاكست بوكس الخاص بالكمية ، في جميع الصفوف وليس في الصف الأول فقط كما حدث معي سالفا.



RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - Taha Okla - 01-08-22

لم أعرف ما قصدك بالديزاين !!!

==
لكن بالنبسة لهذا الكود وأي كود تقوم بكتابته
عليك أن تحلله بشكل منطقي قبل كتابته - لتعرف أين الخطأ في حال وقع معك خطأ ما.

يعني تمشي مع الكود خطوة بخطوة وتتصور بأنك أنت من سيقوم بعرض النتيجة وليس الشاشة..

فما عملته على الكود هو اعادة تنسيق للكود ولم أقم بإضافة أي شيء على الكود سوى عبارة الخروج من الحدث وانهاءه في حال كان السجل قد سبق إدراجه ضمن الجدول..

جعلنا حلقة For تقوم بقراءة كل اسطر الجدول وتقارنها بالعنصر الجديد :
- إن وجد سطر ما يشابه العنصر الجديد عدل بياناته وقام بانهاء الحدث(متجاوزاً بذلك كود الاضافة الذي يلي حلقة For).
- وإن انتهى من مطابقة كل السجلات ولم يجد العنصر انهى عمل حلقة For نتيجة (قراءة كل ارقامها) وانتقل للكود الذي يلي الحلقة وهو حقل الاضافة فيضيف السجل الجديد.


RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - technomedia - 01-08-22

(01-08-22, 06:04 PM)Taha Okla كتب : لم أعرف ما قصدك بالديزاين !!!

==
لكن بالنبسة لهذا الكود وأي كود تقوم بكتابته
عليك أن تحلله بشكل منطقي قبل كتابته - لتعرف أين الخطأ في حال وقع معك خطأ ما.

يعني تمشي مع الكود خطوة بخطوة وتتصور بأنك أنت من سيقوم بعرض النتيجة وليس الشاشة..

فما عملته على الكود هو اعادة تنسيق للكود ولم أقم بإضافة أي شيء على الكود سوى عبارة الخروج من الحدث وانهاءه في حال كان السجل قد سبق إدراجه ضمن الجدول..

جعلنا حلقة For تقوم بقراءة كل اسطر الجدول وتقارنها بالعنصر الجديد :
- إن وجد سطر ما يشابه العنصر الجديد عدل بياناته وقام بانهاء الحدث(متجاوزاً بذلك كود الاضافة الذي يلي حلقة For).
- وإن انتهى من مطابقة كل السجلات ولم يجد العنصر انهى عمل حلقة For نتيجة (قراءة كل ارقامها) وانتقل للكود الذي يلي الحلقة وهو حقل الاضافة فيضيف السجل الجديد.

قصدي بالديزاين هو تصميم واجهات حديثة للبرامج ، بألوان متقاربة و سهلة للعين ، و بخصائص غير مألوفة في البرامج الأخرى، بـ مكتبات Dll أو بدونها، أنا لا أحب التقليد بل أحب الجديد الذي يميز العمل عن غيره من الأعمال الأخرى.


RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - Taha Okla - 01-08-22

تعلمت من مايكروسوفت أن البرنامج كلما كان بسيطاً بالأدوات وسهل الوصول لأي غرض فيه كان أفضل -
فليس العبرة بالشكل وجمالية البرنامج بينما البرنامج
يجب أن يكون سريعاً وخفيفاً على الجهاز الذي سيعمل عليه حتى لو كان بسيط المنظر.

مثلاً : لاحظت أن برامج الحسابات للمقاهي والكفتيريات والجمعيات للشركات البرمجية (الذين يعتنون بالمظهر وجمالية البرنامج) يحتاج من الوقت لاظهار التقرير الشهري أكثر من ثلاث دقائق وأغلبها برامج مبرمجة بلغة الجافا(وهي أسرع من VB في البيانات النصية).
بينما توصلت برامجي لخمسة عشر ثانية لعرض التقرير السنوي (وأقل من ثانية للتقرير اليومي) هذا في اصدارات برامج (VB6.0) فما بالك بإصدارات الـ .Net 
من كامل البيانات وليس من مختصرها وملخصها..
===========================

وآخيراً لا أنسى أن أقدم لك شكري على أهتمامك ومبادرتك القيمة والتي تنم عن جمال خلقك وذوقك ..
..


RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - technomedia - 01-08-22

(01-08-22, 07:59 PM)Taha Okla كتب : تعلمت من مايكروسوفت أن البرنامج كلما كان بسيطاً بالأدوات وسهل الوصول لأي غرض فيه كان أفضل -
فليس العبرة بالشكل وجمالية البرنامج بينما البرنامج
يجب أن يكون سريعاً وخفيفاً على الجهاز الذي سيعمل عليه حتى لو كان بسيط المنظر.

مثلاً : لاحظت أن برامج الحسابات للمقاهي والكفتيريات والجمعيات للشركات البرمجية (الذين يعتنون بالمظهر وجمالية البرنامج) يحتاج من الوقت لاظهار التقرير الشهري أكثر من ثلاث دقائق وأغلبها برامج مبرمجة بلغة الجافا(وهي أسرع من VB في البيانات النصية).
بينما توصلت برامجي لخمسة عشر ثانية لعرض التقرير السنوي (وأقل من ثانية للتقرير اليومي) هذا في اصدارات برامج (VB6.0) فما بالك بإصدارات الـ .Net 
من كامل البيانات وليس من مختصرها وملخصها..
===========================

وآخيراً لا أنسى أن أقدم لك شكري على أهتمامك ومبادرتك القيمة والتي تنم عن جمال خلقك وذوقك ..
..

معك حق في ذلك ، لكني أحاول دائما أن لا أدع "الجمال" يؤثر على سير "الأعمال"

لدي ملاحظة بسيطة :

عندما يجد الكود بأن العنصر موجود مسبقا في DGV يقوم بتعديل الكمية
 
لكن كيف نستطيع أن نجعل الخلية رقم 6   وهي خاصة بالسعر الكلي في DGV    '' الكمية * سعر الوحدة" 

كيف نجعلها تتغير مع تغير الكمية في DGV في أي حدث يمكنني القيام بذلك؟ و هل على إضافة For i أخرى للسعر الكلي ؟


RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - technomedia - 04-08-22

عندما يجد الكود بأن العنصر موجود مسبقا في DGV يقوم بتعديل الكمية
 
لكن كيف نستطيع أن نجعل الخلية رقم 6   وهي خاصة بالسعر الكلي في DGV    '' الكمية * سعر الوحدة" 

كيف نجعلها تتغير مع تغير الكمية في DGV في أي حدث يمكنني القيام بذلك؟ و هل على إضافة For i أخرى للسعر الكلي ؟


RE: تكرار ادخال نفس العنصر في الداتاغريد فياو - Taha Okla - 04-08-22

(04-08-22, 01:15 PM)technomedia كتب : عندما يجد الكود بأن العنصر موجود مسبقا في DGV يقوم بتعديل الكمية
 
لكن كيف نستطيع أن نجعل الخلية رقم 6   وهي خاصة بالسعر الكلي في DGV    '' الكمية * سعر الوحدة" 

كيف نجعلها تتغير مع تغير الكمية في DGV في أي حدث يمكنني القيام بذلك؟ و هل على إضافة For i أخرى للسعر الكلي ؟

في نفس الكود بعد سطر تعديل الكمية - تقوم بقراءة الكمية الجديدة من الخلية رقم (5) وتضربها بسعر الوحدة في الخلية الذي فيها سعر الوحدة.


RE: تفادي تكرار ادخال نفس العنصر في الداتاغريد فياو و تحديث خلية الكمية و السعر - سعود - 04-08-22

يوجد حدثان تكتب بهما الكود ...ظنيتك حملت المثال لاني اضفتها.


RE: تفادي تكرار ادخال نفس العنصر في الداتاغريد فياو و تحديث خلية الكمية و السعر - technomedia - 07-08-22

(04-08-22, 03:01 PM)سعود كتب : يوجد حدثان تكتب بهما الكود ...ظنيتك حملت المثال لاني اضفتها.

عفوا أخي سعود لم أنتبه كنت قد حملت المثال الأول فقط ولم أنتبه للتصحيح في المثال الثاني لكني حملته الآن
كل الشكر و التقدير لك وكل من ساهم برد في هذا المنتدى.