تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
المساعدة في التعديل على كود تعديل البيانات في قاعدة سيكوال سيرفر
#1
        السلام عليكم اخواني الكود التالي يعمل بشكل ممتاز ولاكن هل يمنك كتابته بطريقة اخرى حيث ان الوضع الحالي عند كثرة السجلات يؤدي الى البطيء الشديد وشكرا لكم جميعا


 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
الرد
تم الشكر بواسطة: حريف برمجة
#2
السبب هو الاستعلام داخل For وهو خطأ جدا

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

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



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


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