تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
بطء في جلب البيانات
#1
لمـاذا البطء في جلب البيانـات في الداتا قريدفيو على الرغم من البيانات لا تتعدي 10 اسطر

كود :
Private Sub FillCCourses()
        ' صب عرض الدرجــات حسب اســم المـادة
        If DataGridView1.Rows.Count = 0 Then Exit Sub
        For i As Integer = 0 To DataGridView1.Rows.Count - IIf(DataGridView1.AllowUserToAddRows, 2, 1)
            DataGridView1.Rows(i).Cells(4).Value = ""
            DataGridView1.Rows(i).Cells(5).Value = ""
            DataGridView1.Rows(i).Cells(6).Value = ""
        Next
        For i As Integer = 0 To DataGridView1.Rows.Count - IIf(DataGridView1.AllowUserToAddRows, 2, 1)
            Dim clasIndex As Integer = FormMin.ListBoxClas.SelectedIndex + 1
            Dim roomIndex As Integer = Me.Combroom.SelectedIndex + 1
            Dim sql As String = "select stID, on" & CombCourses.SelectedIndex + 1 & ", to" & CombCourses.SelectedIndex + 1 & ", tr" & CombCourses.SelectedIndex + 1 & " from TBL_Final1 where IDStudent=" & DataGridView1.Rows(i).Cells(0).Value & " and IDClas=" & FormMin.ListBoxClas.SelectedIndex + 1 & " and ClassroomID=" & Me.Combroom.SelectedIndex + 1 & " and SemesterID=" & Trim$(CombSemester.Text)
            Dim cm As New OleDb.OleDbCommand(sql, Con)
            cm.Parameters.AddWithValue("IDStudent", DataGridView1.Rows(i).Cells(0).Value)
            cm.Parameters.AddWithValue("IDClas", FormMin.ListBoxClas.SelectedIndex + 1)
            cm.Parameters.AddWithValue("ClassroomID", Me.Combroom.SelectedIndex + 1)
            cm.Parameters.AddWithValue("SemesterID", Trim$(CombSemester.Text))

            Try
                If Con.State = ConnectionState.Closed Then Con.Open()
                Dim dr As OleDb.OleDbDataReader = cm.ExecuteReader
                If dr.Read Then

                    DataGridView1.Rows(i).Cells(4).Value = dr(1)
                    DataGridView1.Rows(i).Cells(5).Value = dr(2)
                    DataGridView1.Rows(i).Cells(6).Value = dr(3)

                End If
                dr.Close()

            Catch ex As Exception
                MessageBox.Show("خطأ: " & ex.Message)
            Finally
                If Con.State = ConnectionState.Open Then Con.Close()
            End Try
        Next

    End Sub

واستخدمت هذا الكود ولكن لم يضبط معي
كود :
' صب عرض الدرجــات حسب اســم المـادة
        If DataGridView1.Rows.Count = 0 Then Exit Sub

        Dim sql As String = "select IDStudent, on" & CombCourses.SelectedIndex + 1 & ", to" & CombCourses.SelectedIndex + 1 & ", tr" & CombCourses.SelectedIndex + 1 & " from TBL_Final1 where IDClas=@IDClas and ClassroomID=@ClassroomID and SemesterID=@SemesterID"
        Dim dt As New DataTable()
        Using Con As New OleDb.OleDbConnection("...")
            Con.Open()
            Using cmd As New OleDb.OleDbCommand(sql, Con)
                cmd.Parameters.AddWithValue("@IDClas", FormMin.ListBoxClas.SelectedIndex + 1)
                cmd.Parameters.AddWithValue("@ClassroomID", Me.Combroom.SelectedIndex + 1)
                cmd.Parameters.AddWithValue("@SemesterID", Trim$(CombSemester.Text))

                Using adapter As New OleDb.OleDbDataAdapter(cmd)
                    adapter.Fill(dt)
                End Using
            End Using
        End Using

        For Each row As DataRow In dt.Rows
            For i As Integer = 0 To DataGridView1.Rows.Count - 1
                If DataGridView1.Rows(i).Cells(0).Value.ToString() = row("IDStudent").ToString() Then
                    DataGridView1.Rows(i).Cells(4).Value = row(1)
                    DataGridView1.Rows(i).Cells(5).Value = row(2)
                    DataGridView1.Rows(i).Cells(6).Value = row(3)
                    Exit For
                End If
            Next
        Next
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:
#2
هذا مثال لمشكلة بطء جلب البيانات في الداتا قريدفيو
اختر الفصل الأول من الليست بوكس في الفورم الرئيسي
ثم اختر  من الكومبوكس أعمال الفصل
ومن قائمــة رصد الدرجـات - أعمال الفصل

وفي الفورم  FormSemester1
اختر من الكومبوكس Combroom - اسم القسم (عام)
ثم من الكومبوكس CombCourses - اختر أي مادة
سوف تلاحظ بطء في جلب البيانات


.rar   Exam_Students.rar (الحجم : 194.88 ك ب / التحميلات : 17)
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:
#3
جرب الكود بالطريقة التالية

كود :
   Private Sub FillCCourses()
       ' صب عرض الدرجــات حسب اســم المـادة
       If Con.State = ConnectionState.Closed Then Con.Open()
       If DataGridView1.Rows.Count = 0 Then Exit Sub
       For i As Integer = 0 To DataGridView1.Rows.Count - IIf(DataGridView1.AllowUserToAddRows, 2, 1)
           DataGridView1.Rows(i).Cells(4).Value = ""
           DataGridView1.Rows(i).Cells(5).Value = ""
           DataGridView1.Rows(i).Cells(6).Value = ""
           Dim clasIndex As Integer = FormMin.ListBoxClas.SelectedIndex + 1
           Dim roomIndex As Integer = Me.Combroom.SelectedIndex + 1
           Dim sql As String = "select stID, on" & CombCourses.SelectedIndex + 1 & ", to" & CombCourses.SelectedIndex + 1 & ", tr" & CombCourses.SelectedIndex + 1 & " from TBL_Final1 where IDStudent=" & DataGridView1.Rows(i).Cells(0).Value & " and IDClas=" & FormMin.ListBoxClas.SelectedIndex + 1 & " and ClassroomID=" & Me.Combroom.SelectedIndex + 1 & " and SemesterID=" & Trim$(CombSemester.Text)
           Dim cm As New OleDb.OleDbCommand(sql, Con)
           cm.Parameters.AddWithValue("IDStudent", DataGridView1.Rows(i).Cells(0).Value)
           cm.Parameters.AddWithValue("IDClas", FormMin.ListBoxClas.SelectedIndex + 1)
           cm.Parameters.AddWithValue("ClassroomID", Me.Combroom.SelectedIndex + 1)
           cm.Parameters.AddWithValue("SemesterID", Trim$(CombSemester.Text))
           Try
               Dim dr As OleDb.OleDbDataReader = cm.ExecuteReader
               If dr.Read Then
                   DataGridView1.Rows(i).Cells(4).Value = dr(1)
                   DataGridView1.Rows(i).Cells(5).Value = dr(2)
                   DataGridView1.Rows(i).Cells(6).Value = dr(3)
               End If
               dr.Close()
           Catch ex As Exception
               MessageBox.Show("خطأ: " & ex.Message)
           Finally
           End Try
       Next
       If Con.State = ConnectionState.Open Then Con.Close()
   End Sub
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة: مصمم هاوي , مصمم هاوي , Zuhare , Zuhare , Taha Okla
#4
(06-05-25, 07:57 PM)princelovelorn كتب : جرب الكود بالطريقة التالية

كود :
   Private Sub FillCCourses()
       ' صب عرض الدرجــات حسب اســم المـادة
       If Con.State = ConnectionState.Closed Then Con.Open()
       If DataGridView1.Rows.Count = 0 Then Exit Sub
       For i As Integer = 0 To DataGridView1.Rows.Count - IIf(DataGridView1.AllowUserToAddRows, 2, 1)
           DataGridView1.Rows(i).Cells(4).Value = ""
           DataGridView1.Rows(i).Cells(5).Value = ""
           DataGridView1.Rows(i).Cells(6).Value = ""
           Dim clasIndex As Integer = FormMin.ListBoxClas.SelectedIndex + 1
           Dim roomIndex As Integer = Me.Combroom.SelectedIndex + 1
           Dim sql As String = "select stID, on" & CombCourses.SelectedIndex + 1 & ", to" & CombCourses.SelectedIndex + 1 & ", tr" & CombCourses.SelectedIndex + 1 & " from TBL_Final1 where IDStudent=" & DataGridView1.Rows(i).Cells(0).Value & " and IDClas=" & FormMin.ListBoxClas.SelectedIndex + 1 & " and ClassroomID=" & Me.Combroom.SelectedIndex + 1 & " and SemesterID=" & Trim$(CombSemester.Text)
           Dim cm As New OleDb.OleDbCommand(sql, Con)
           cm.Parameters.AddWithValue("IDStudent", DataGridView1.Rows(i).Cells(0).Value)
           cm.Parameters.AddWithValue("IDClas", FormMin.ListBoxClas.SelectedIndex + 1)
           cm.Parameters.AddWithValue("ClassroomID", Me.Combroom.SelectedIndex + 1)
           cm.Parameters.AddWithValue("SemesterID", Trim$(CombSemester.Text))
           Try
               Dim dr As OleDb.OleDbDataReader = cm.ExecuteReader
               If dr.Read Then
                   DataGridView1.Rows(i).Cells(4).Value = dr(1)
                   DataGridView1.Rows(i).Cells(5).Value = dr(2)
                   DataGridView1.Rows(i).Cells(6).Value = dr(3)
               End If
               dr.Close()
           Catch ex As Exception
               MessageBox.Show("خطأ: " & ex.Message)
           Finally
           End Try
       Next
       If Con.State = ConnectionState.Open Then Con.Close()
   End Sub

باركــ الله فيكـــــ أخـي الحبيب princelovelorn
أفضـل من قبــل بكثير
خيرٌ من سرعـــة السُلحفاة هههههههه
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة: princelovelorn , princelovelorn
#5
إقتباس :باركــ الله فيكـــــ أخـي الحبيب princelovelorn
أفضـل من قبــل بكثير
خيرٌ من سرعـــة السُلحفاة هههههههه

اللهم أمين وإياكم أخي 

الحمد لله والشكر لله
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:
#6
تاكد انك لا تستدعي جلب البيانات اكثر مره
الرد }}}
تم الشكر بواسطة: princelovelorn , مصمم هاوي , Kamil , Taha Okla
#7
(07-05-25, 10:02 AM)Zuhare كتب : تاكد انك لا تستدعي جلب البيانات اكثر مره

أجرب المرفق وأخبرك بالنتيجة

الأساتذة الكرام
princelovelorn
Zuhare

صنيعكم جميل طوق عنقي
أخي Zuhare
التعديل في منتهى الروعة وجاء بالنتيجة التي كنت أريدها بالضبط
فلا شلت يمينك أنت والأخ الفاضل المفضال
princelovelorn
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة: princelovelorn , princelovelorn , Zuhare
#8
أخي Zuhare
قمت بإفراغ جدول الدرجات ثم استدعاء بيانات الطلبة فلاخظت الٱتي:
أولا: لم يتم جلب البيانات من جدول الطلاب.
والمفروض يجب جلب البيانات حسب الصف والقسم حتى يتم تسجيل الدرجات حسب المادة ورقم الامتحان.
ثانيا: يتم استدعاء الدرجات حسب IDSemester
والمادة المختار

في العموم لو تم تعديل المثال وفق المطلوب فحتما سيكون مثالا ممتازا
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:
#9
ملاحظة :
عند طلب تنفيذ كود بحلقة تكرارية عليك مراعات :
- عدم تكرار الأكواد التي لا داعي لها ضمن الحلقة (في المثال هنا - فتح واغلاق قاعدة البيانات مع كل دورة لا داعي له).
- لا تستخدم عناصر من نافذة أو كائن مرئي، استبدلها بمتغيرات. :
   . يعني عليك استخدام متغيرات تقوم باسناد قيم العناصر المرئية لتلك المتغيرات.. ثم تقوم بتنفيذ الحلقة التكرارية على تلك المتغيرات وليس الكائنات المرئية.
   . الفرق بين سرعة استخدام حلقة تكرارية لمتغيرات عن كائنات مرئية أكثر من 20 ضعف بل هذا رقم صغير جداً بالنسبة لبعض الأجهزة وستلاحظ هذا بوضوح كلما كبر أو كثر عدد السجلات.

في كودك هذا استخدمت عناصر مرئية منها : 
     CombCourses.SelectedIndex
     FormMin.ListBoxClas.SelectedIndex
     Me.Combroom.SelectedIndex
     CombSemester.Text
     بإمكانك تخزين كل واحدة منها في متغير - قبل الدخول للحلقة ومن ثم تستخدم المتغير.

     DataGridView1.Rows(i).Cells(0).Value
     بإمكانك تخزين القيم ضمن مصفوفة قبل الدخول للحلقة وتستخدم المصفوفة ضمن الحلقة.
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: Zuhare , مصمم هاوي , princelovelorn
#10
نصيحة بجمل
1. تخزين القيم في متغيرات قبل الدخول للحلقة:

Dim C As Integer = FormMin.ListBoxClas.SelectedIndex
Dim R As Integer = Me.Combroom.SelectedIndex
Dim S As String = CombSemester.Tex

2. ' تخزين القيم في مصفوفة قبل الدخول للحلقة

Dim valuesArray(dt.Rows.Count - 1, 3) As Object
For i As Integer = 0 To dt.Rows.Count - 1
   valuesArray(i, 0) = dt.Rows(i).Item(0).ToString
   valuesArray(i, 1) = dt.Rows(i).Item(1).ToString
   valuesArray(i, 2) = dt.Rows(i).Item(2).ToString
   valuesArray(i, 3) = dt.Rows(i).Item(3).ToString
Next
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة: princelovelorn , Taha Okla


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 816 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 791 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,193 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,017 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  تعديل كود تحديث البيانات مصمم هاوي 1 775 26-04-25, 06:07 PM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 693 26-04-25, 12:24 AM
آخر رد: الدريساوي
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 656 24-04-25, 12:58 PM
آخر رد: foad8920
  إغلاق الفورم مع حذف جميع البيانات الموجودة به صالح عبدالله 10 1,030 19-04-25, 08:54 PM
آخر رد: Kamil
  ارجو تعديل الكود جلب البيانات عن طريق اجراء مخزن - مرفق مثال new_programer 0 617 05-02-25, 01:51 AM
آخر رد: new_programer
  مساعدة في استيراد البيانات من الليست بوكس fireswored1 4 462 22-01-25, 08:43 PM
آخر رد: fireswored1

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


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