تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
منع تكرار العناصر في داتا جيرد في حال وجود نفس العنصر والسعر سويا
#1
السلام عليكم ارغب بالتعديل على الكود التالي كما هو موضوخ بالصورة ادناه ... في حال تكرر ((( المنتج والسعر ))) يقول بالتعديل فقط على العناصر بالداتا جيرد وفي حال تكرر المنتج فقط يتم اضافته بصورة طبيعية

و جزاكم الله خير


DataGridView1.Rows.Add(Textbox1.Text, Textbox2.Text, Textbox3,  Textbox2.Text*Textbox3)

بعد تعديل الكود يصبح هكذا


الملفات المرفقة صورة/صور
       
الرد }}}
تم الشكر بواسطة: mohamedgadain61
#2
مرحبا بك أخي moh61

تفضل هذا الكود يقوم بالمطلوب الذي أردته بالضبط !

بالتوفيق إن شاء الله .

كود :
  Dim found As Boolean = False
       For Each row As DataGridViewRow In DataGridView1.Rows
           If row.Cells(0).Value = TextBox1.Text And row.Cells(1).Value = TextBox2.Text Then
               row.Cells(2).Value = Val(row.Cells(2).Value) + Val(TextBox3.Text)
               row.Cells(3).Value = Val(row.Cells(1).Value) * Val(row.Cells(2).Value)
               found = True
               Exit For
           End If
       Next

       If Not found Then
           Dim newRow As String() = {TextBox1.Text, TextBox2.Text, TextBox3.Text, Val(TextBox2.Text) * Val(TextBox3.Text)}
           DataGridView1.Rows.Add(newRow)
       End If
الرد }}}
تم الشكر بواسطة: moh61
#3
إذا تكرر المنتج والسعر: قم بتحديث الكمية (Textbox3) والإجمالي (Textbox2 * Textbox3) للصف الموجود في DataGridView.
إذا تكرر المنتج فقط: قم بإضافة الصف الجديد بشكل طبيعي.
إليك الكود المعدل لتحقيق ذلك:

PHP كود :
Private Sub AddOrUpdateRow()
 
   Dim product As String TextBox1.Text
    Dim price 
As Decimal Decimal.Parse(TextBox2.Text)
 
   Dim quantity As Integer Integer.Parse(TextBox3.Text)
 
   Dim total As Decimal price quantity

    Dim rowFound 
As Boolean False
    Dim priceMatched 
As Boolean False

    
' البحث عن المنتج في DataGridView
    For Each row As DataGridViewRow In DataGridView1.Rows
        If row.Cells(0).Value IsNot Nothing AndAlso row.Cells(0).Value.ToString() = product Then
            rowFound = True

            ' 
التحقق من السعر
            If Decimal
.Parse(row.Cells(1).Value.ToString()) = price Then
                priceMatched 
True
                
' تحديث الكمية والإجمالي
                row.Cells(2).Value = quantity
                row.Cells(3).Value = total
                Exit For
            End If
        End If
    Next

    ' 
إذا لم يتم العثور على المنتج أو لم يتطابق السعر، إضافة صف جديد
    If Not rowFound OrElse Not priceMatched Then
        DataGridView1
.Rows.Add(productpricequantitytotal)
 
   End If

 
   ' رسائل للتوضيح (يمكن إزالتها لاحقًا)
    If rowFound AndAlso priceMatched Then
        MessageBox.Show("تم تحديث الكمية والإجمالي للمنتج المكرر بنفس السعر.")
    ElseIf rowFound Then
        MessageBox.Show("تم إضافة المنتج المكرر بسعر مختلف.")
    Else
        MessageBox.Show("تم إضافة المنتج الجديد.")
    End If
End Sub 

شرح الكود:
جمع القيم من TextBoxes:

product: اسم المنتج.
price: سعر المنتج.
quantity: كمية المنتج.
total: الإجمالي المحسوب كـ (السعر × الكمية).
البحث في DataGridView:

يتم البحث في كل صف في DataGridView للتحقق من وجود المنتج.
إذا تم العثور على المنتج وتطابق السعر، يتم تحديث الكمية والإجمالي.
إذا تم العثور على المنتج ولكن السعر مختلف، يتم إضافة صف جديد.
إضافة الصف الجديد:

إذا لم يتم العثور على المنتج أو إذا كان السعر مختلفًا، يتم إضافة صف جديد.
رسائل توضيحية:

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

PHP كود :
Private Sub btnAdd_Click(sender As ObjectAs EventArgsHandles btnAdd.Click
    AddOrUpdateRow
()
End Sub 

نقاط إضافية:
تأكد من أن DataGridView يحتوي على الأعمدة المناسبة (الاسم، السعر، الكمية، الإجمالي).
يمكنك تخصيص الرسائل أو إزالتها حسب الحاجة.
هذا الكود يجب أن يحقق السلوك المطلوب بشكل دقيق. إذا كانت هناك تفاصيل إضافية أو حالات خاصة تحتاج إلى التعامل معها، يمكنك تعديل الكود وفقًا لذلك.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة
الرد }}}
تم الشكر بواسطة: moh61
#4
جزاكم الله خيرا .. وبارك الله لكما
الرد }}}
تم الشكر بواسطة: أبو خالد الشكري , غزة العزة


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  القاعدة رغم وجود الباس وورد اصبحت لا تفتح atefkhalf2004 5 457 20-10-25, 10:24 AM
آخر رد: dr.programming
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,190 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  [VB.NET] حقل الزامي ضمن داتا كريت فيو EMADW 1 402 20-05-25, 01:12 PM
آخر رد: princelovelorn
  [VB.NET] داتا كريت فيو EMADW 13 1,128 15-05-25, 10:48 PM
آخر رد: Taha Okla
  سبب تكرار رسالة التنبيه مصمم هاوي 4 414 03-05-25, 02:05 PM
آخر رد: مصمم هاوي
  [VB.NET] جمع عمود داتا كريت فيو مع تجاهل الخلايا الفارغة EMADW 4 471 29-04-25, 10:57 PM
آخر رد: Taha Okla
  [VB.NET] ترقيم داتا كريت فيو EMADW 1 336 21-04-25, 11:52 PM
آخر رد: Taha Okla
  [VB.NET] استدعاء داتا كريت فيو من فورم اخر EMADW 1 412 16-04-25, 06:10 PM
آخر رد: مصمم هاوي
  مساعدة في كود عدم تكرار استدعاء نفس السؤال من المصفوفة fireswored1 5 534 10-02-25, 05:11 PM
آخر رد: fireswored1
  التأكد من وجود أرقام فقط فى string heem1986 3 304 07-01-25, 01:37 AM
آخر رد: أبو خالد الشكري

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


يقوم بقرائة الموضوع: