منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : المساعدة في التعديل على كود تعديل البيانات في قاعدة سيكوال سيرفر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
        السلام عليكم اخواني الكود التالي يعمل بشكل ممتاز ولاكن هل يمنك كتابته بطريقة اخرى حيث ان الوضع الحالي عند كثرة السجلات يؤدي الى البطيء الشديد وشكرا لكم جميعا


 Dim sql = "select * from invoice_add where invoice_number=N'" & (invoice_number.Text) & "'"
        Dim adp As New SqlDataAdapter(sql, sqlconn)
        Dim ds As New DataSet
        adp.Fill(ds)
        Dim dt = ds.Tables(0)
        If dt.Rows.Count > 0 Then

            For a = 0 To dgv.Rows.Count - 1
                adp = New SqlDataAdapter("select * from item where itemcode=N'" & (dgv.Rows(a).Cells(0).Value) & "'", sqlconn)
                ds = New DataSet
                adp.Fill(ds)
                dt = ds.Tables(0)
                Dim dr3 = dt.Rows(0)
                'تحديث سجل كمية المادة المتبقية
                dr3!itemcount = Val(dgv.Rows(a).Cells(14).Value)
                dr3!total_price = dr3!itemcount * dr3!itembuyprice

                'تحديث سجل كمية المادة المباعه
                If dr3!out_count.ToString = "" Then
                    dr3!out_count = 0
                    dr3!out_count = Val(dr3!out_count) + Val(dgv.Rows(a).Cells(16).Value)
                    dr3!Profits = Val(dr3!Profits) + Val(dgv.Rows(a).Cells(8).Value)

                Else

                    dr3!out_count = Val(dr3!out_count) + Val(dgv.Rows(a).Cells(16).Value)
                    dr3!Profits = Val(dr3!Profits) + Val(dgv.Rows(a).Cells(8).Value)

                End If

                dr3!date_sale = invoice_date.Value
                Dim cmd4 As New SqlCommandBuilder(adp)
                adp.Update(dt)
            Next
            adp.Dispose()
            ds.Dispose()
            dt.Dispose()
           
            '---------------------------------------------------------------------------
            '----------------------------------------------------------------------------
            My.Computer.Audio.Play(My.Resources.alert, AudioPlayMode.WaitToComplete)
        End If
السبب هو الاستعلام داخل For وهو خطأ جدا

adp = New SqlDataAdapter("select * from item where itemcode=N'" & (dgv.Rows(a).Cells(0).Value) & "'", sqlconn)

حاول ان تجعل الاستعلام مرة واحدة خارج For ومن ثم معالجته داخل for بعد ذلك
للاسف تمت المحاول ولم تفلح العملية حيث اخراج جملة الاستعلام من داخل For ادى الى تحديث جميع القيم في الجدول المكون من 2000 سجل لقيمة واحدة وهذا خطا
اذا كان يوجد لديك تعديل الرجاء المساعده
طيب ارسل مثال او اذكر تفاصيل عن البرنامج او قاعدة البيانات