تقييم الموضوع :
  • 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] ممكن تعديل الكود التالي D-Z 0 31 21-09-17, 06:34 PM
آخر رد: D-Z
  مساعده فى تعديل كود خاص بالتكست بوكس نبيل فتحى 1 34 19-09-17, 03:33 PM
آخر رد: أبو نوره
  [سؤال] مشكلة في حذف و تعديل بيانات DataGridView mohammed alnour 4 130 16-09-17, 01:01 AM
آخر رد: mohammed alnour
  [VB.NET] مشكلة في تعديل المشروع مصمم هاوي 9 522 15-09-17, 06:54 PM
آخر رد: مصمم هاوي
  [سؤال] الى الاساتذة الكرام ارجو المساعدة(تعديل كود) gharib 5 163 06-09-17, 08:32 AM
آخر رد: gharib
  [كود] احتاج الى تعديل :( MeDo Ly 2 100 25-08-17, 11:41 PM
آخر رد: أبو نوره
  [VB.NET] اريد تعديل ع هذا الكود الرجاء مساعدتي e-coder 1 88 09-08-17, 06:25 AM
آخر رد: e-coder
  [سؤال] هل الكود التالي يمكن ان يسجل صوت الكومبيوتر بعد تعديل بسيط سعود 4 137 09-08-17, 03:56 AM
آخر رد: سعود
  مشكله فى DateTimePicker1 تعديل كود نبيل كونكت 2 132 31-07-17, 07:51 PM
آخر رد: ابو محمد القحطاني
  [VB.NET] طلب تعديل في كود للطباعة باستخدام اداة PrintDocument (مرفق) ssayed111 1 180 28-07-17, 01:27 AM
آخر رد: IBRA939

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


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