تقييم الموضوع :
  • 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] احتاج تعديل الكود يخص تشغيل Button حسب user domin hglogtd 4 97 أمس, 09:25 AM
آخر رد: hglogtd
  منع تعديل التاريخ والوقت ريم النهاري 7 145 18-05-17, 09:28 AM
آخر رد: ريم النهاري
  [مشروع] ممكن تعديل علي المشروع دموع الوطن 12 204 15-05-17, 09:29 AM
آخر رد: دموع الوطن
  مساعده فى تعديل الكود ده لو سمحتوا يا جماعه نبيل كونكت 2 135 22-04-17, 06:16 PM
آخر رد: عبـدالله
  مساعده وارجو الرد فى ربط الصلاحيات بالبرنامج تعديل الكود بس فين الخطا نبيل كونكت 8 179 20-04-17, 01:41 PM
آخر رد: أسامة السالمي
  كيف يمكن تعديل كموبوكس داخل داتا جريد كفاح 0 60 14-04-17, 12:34 PM
آخر رد: كفاح
  [VB.NET] يرجى المساعدة في تعديل كود الطباعة dubai.eig 14 297 13-04-17, 09:40 PM
آخر رد: dubai.eig
  مساعدة في تعديل الكود المرفق للبحث Filter khaled12345 2 143 10-04-17, 11:41 PM
آخر رد: khaled12345
  طلب تعديل كود فراس محي 1 72 03-04-17, 02:08 PM
آخر رد: فراس محي
Thumbs Up تعديل كود واسف انه كود كبير نبيل كونكت 1 118 01-04-17, 04:08 PM
آخر رد: abdualla

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


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