تقييم الموضوع :
  • 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
القصد تغير جملة فور !
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] تعديل كود لاعطائي عدد كلمة في الداتا قريد فيو hglogtd 2 59 أمس, 10:50 AM
آخر رد: hglogtd
  [سؤال] تعديل اسم مستخدم قاعدة البيانات ( ايقاف و تفعيل المستخدم ) عماد البشبيشى 4 143 14-11-17, 02:29 PM
آخر رد: عماد البشبيشى
  مساعده فى تعديل كود للمدين والداين نبيل فتحى 3 79 01-11-17, 07:23 PM
آخر رد: a.ahmed
  تعديل كود ازالة السالب من الداتاجريد فيو نبيل فتحى 1 57 29-10-17, 07:52 PM
آخر رد: محمود صالح
  مساعده فى تعديل الكود لو سمحتوا نبيل فتحى 4 81 24-10-17, 09:30 AM
آخر رد: نبيل فتحى
Exclamation [VB.NET] تعديل على الكود mervandzz 2 65 22-10-17, 05:28 PM
آخر رد: mervandzz
  تعديل كود عدم اضافة اكترمن 0 فى التكست بوكس نبيل فتحى 5 162 18-10-17, 09:49 PM
آخر رد: سعود
  اريد تعديل ع المشروع فقط + تحميل المشروع بالكامل e-coder 4 152 17-10-17, 12:09 AM
آخر رد: e-coder
  [VB.NET] اخر تعديل بالكلاس محمد اسماعيل 1 64 14-10-17, 09:41 PM
آخر رد: محمد اسماعيل
  [VB.NET] اريد تعديل ع هذا الكود الرجاء مساعدتـي e-coder 0 59 13-10-17, 06:39 PM
آخر رد: e-coder

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


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