تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعديل على كود بحث فى database
#1
السلام عليكم
هل ممكن التعديل على هذا الكود
كود :
Dim word As String = encrypt(TextBox5.Text.Trim)
        Dim a As String = Format(DateTimePicker1.Text, "dd/mm/yyyy")
        '   Using databch As New OleDbDataAdapter("SELECT * FROM low6 where a6 like '%" & word & "%' and a3= '" & TextEdit6.Text.Trim & "' and a4= '" & TextEdit5.Text.Trim & "'", ConStr)
        Dim sql As String = String.Format("SELECT distinct a2 FROM low6 where a6 like '%{0}%'", word)

        If String.IsNullOrEmpty(TextBox6.Text.Trim) Then
            sql = sql
        Else
            sql = String.Format("{0} and a3= '{1}'", sql, TextBox6.Text.Trim)
        End If

        If String.IsNullOrEmpty(TextBox7.Text.Trim) Then
            sql = sql
        Else
            sql = String.Format("{0} and a4= '{1}'", sql, TextBox7.Text.Trim)
        End If

        If String.IsNullOrEmpty(DateTimePicker1.Text.Trim) Or String.IsNullOrEmpty(DateTimePicker2.Text.Trim) Then
            sql = sql
        Else
            sql = String.Format("{0}and a5 >= #{1}# and a5 <= #{2}#", sql, DateTimePicker1.Text.Trim, DateTimePicker2.Text.Trim)
        End If
         Dim datasrech As New DataSet
        Dim datasrech2 As New DataSet
        Label9.Text = "0"

        Using databch As New OleDbDataAdapter(sql, ConStr1)
            datasrech.Clear()
            databch.Fill(datasrech, "treserch")

            If Me.BindingContext(datasrech, "treserch").Count = 0 Then
                TreeView5.Nodes.Clear()
                MsgBox("لم يتم العثور على شيء", 48 + 524288, "البحث")
                Exit Sub
            End If
            Label9.Visible = True
            Label9.Text = Me.BindingContext(datasrech, "treserch").Count
        End Using
        ProgressBar1.Visible = True
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = Val(Label9.Text) + 1
        ProgressBar1.Value = 0
        Dim dv1 As DataView = datasrech.Tables("treserch").DefaultView

        TreeView5.Nodes.Clear()
        For Each drLine As DataRowView In dv1

            Dim id_sharh As Integer = drLine("a2").ToString
            Using datab4 As New OleDbDataAdapter("SELECT * FROM low5 where id = " & id_sharh & "", ConStr1)

                datasrech2.Clear()
                datab4.Fill(datasrech2, "low5")
                Dim dv12 As DataView = datasrech2.Tables("low5").DefaultView
                For Each drLine2 As DataRowView In dv12
                    Dim MainHeader As New TreeNode(drLine2("a6").ToString())
                    MainHeader.Tag = drLine2("key").ToString
                    MainHeader.Name = drLine2("key").ToString
                    '  MainHeader.ForeColor = Color.Red
                    TreeView5.Nodes.Add(MainHeader)

                    Application.DoEvents()
                Next
            End Using

        Next
        TreeView5.EndUpdate()
هذا الكود وظيفته عرض البيانات من الدتا بيز فى treeview
لاكن الكود يأخذ وقت طويل فى اظهار البيانات فيظهر البيانات متتابعة بسبب استخدام جملة for
هل ممكن تعديل الكود ليتم عرض جميع البيانات مباشرة دون انتظار ؟
الرد
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته

بدل Dataset أحسن تستخدم DataReader في قراءة البيانات لأنه أسرع شويه

عند إسناد القيم مثل هذه :
كود :
Dim MainHeader As New TreeNode(drLine2("a6").ToString())
تستخدم في الـ DataReader فهرس الحقل وليس اسمه كالتالي:
كود :
While dr.Read

Dim MainHeader As New TreeNode(dr.GetInt32(0))
MainHeader.Name = dr.GetString(1)
.
.
.

End While
(وَقُل رَّبِّ زِدْنِي عِلْمًا)

الرد
تم الشكر بواسطة:
#3
السلام عليكم
شكرا للاجابة , لكن فى مشكلة فى الكود
عدلت كما قلت وأسندت رقم الحقل بدل اسمه فأصبح الكود
كود :
Dim dr As SqlDataReader
                    While dr.Read
                        Dim MainHeader As New TreeNode(dr.GetInt32(7))
                        MainHeader.Tag = dr.GetString(4)
                        MainHeader.Name = dr.GetString(1)
                        TreeView5.Nodes.Add(MainHeader)
                        TreeView5.EndUpdate()
                        dr.Close()
                    End While

لاكن يعطينى خطأ !
Object reference not set to an instance of an object.
الرد
تم الشكر بواسطة:
#4
لأنك عرفت ال DataReader بدون ما تسند له الكائن الذي سيتعطيه البيانات بعد تعديل الكود سيصبح كالتالي:
كود :
Dim dr As SqlDataReader = databch.SelectCommand.ExecuteReader
(وَقُل رَّبِّ زِدْنِي عِلْمًا)

الرد
تم الشكر بواسطة:
#5
شكرا جزيلا تم عمل الكود بشكل سليم
========================

لاكن لم يحدث تغير نفس شىء يأخذ وقت فى عرض البيانات

هل يمكن تغير هذا الكود لاخر
كود :
For Each drLine2 As DataRowView In dv12
القصد تغير جملة فور !
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مطلوب معاينة المثال والمساعدة في تعديل الكود وفقكم الله فراس الغزي 8 239 29-01-19, 10:43 PM
آخر رد: فراس الغزي
  طلب تعديل كود استعلام new_programer 2 98 25-01-19, 11:44 PM
آخر رد: حريف برمجة
  تعديل مثال العملاء الغير مسددين القسط new_programer 7 301 25-01-19, 08:40 PM
آخر رد: new_programer
  [SQL] مطلوب تعديل كود الاستعلام من جدولين غير مرتبطين فراس الغزي 10 333 18-01-19, 11:05 PM
آخر رد: asemshahen5
  [VB.NET] ;سؤال كيفية تعديل المدخلات في (الداتا قريد فيو ) قبل الحفظ في قاعدة البيانات EYADISMAIL 4 268 16-01-19, 01:26 AM
آخر رد: EYADISMAIL
  تعديل كود ابو مالك المنصوري 0 90 12-01-19, 11:57 PM
آخر رد: ابو مالك المنصوري
  تعديل كود ابو مالك المنصوري 0 87 12-01-19, 11:55 PM
آخر رد: ابو مالك المنصوري
  [VB.NET] تعديل بسيط في كود بحث trakktour 5 199 19-12-18, 12:53 AM
آخر رد: elgokr
  [VB.NET] تعديل بسيط في الكود :) مجهول 5 238 17-12-18, 08:18 PM
آخر رد: elgokr
  محتاج مساعدة فى تعديل كود بسيط Mohamed Magdy 5 188 17-11-18, 04:30 AM
آخر رد: elgokr

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


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