تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كود البحث طول جدا و بطى
#1
Question 
السلام عليكم شباب عندى سؤال و هو
كود البحث عندى طويل جدا و بطى فى التنفيذ فاهل يوجد حل لتصغير حجم الكود مع التنفيذ السريع
فى تحميل الفروم بشغل الكود التالى
كود :
textboxAutoCompte(TextBox1)
       textboxAutoComptee(TextBox2)

وهى دى الاكود لى بتشغل عطول
كود :
Sub textboxAutoCompte(ByVal tb As TextBox)
       Dim constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
       Dim con As New SqlConnection(constr)
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Dim dt As New DataTable
       Dim ret As Integer = New SqlDataAdapter("Select * From TheResourceDetails", con).Fill(dt)
       Dim MySource As New AutoCompleteStringCollection()
       For Each s In dt.AsEnumerable.Cast(Of DataRow).Select(Function(r) r("CompanyName")).ToArray()
           MySource.Add(s)
       Next
       With tb
           .AutoCompleteCustomSource = MySource
           .AutoCompleteMode = AutoCompleteMode.SuggestAppend
           .AutoCompleteSource = AutoCompleteSource.CustomSource
       End With
       If con.State = ConnectionState.Open Then con.Close()
   End Sub

   Sub textboxAutoComptee(ByVal tb As TextBox)
       Dim constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
       Dim con As New SqlConnection(constr)
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Dim dt As New DataTable
       Dim ret As Integer = New SqlDataAdapter("Select * From TheResourceDetails", con).Fill(dt)
       Dim MySource As New AutoCompleteStringCollection()
       For Each s In dt.AsEnumerable.Cast(Of DataRow).Select(Function(r) r("CompanyName")).ToArray()
           MySource.Add(s)
       Next
       With tb
           .AutoCompleteCustomSource = MySource
           .AutoCompleteMode = AutoCompleteMode.SuggestAppend
           .AutoCompleteSource = AutoCompleteSource.CustomSource
       End With
       If con.State = ConnectionState.Open Then con.Close()
   End Sub
تمام و بعد كده بعمل بحث تانى 
كود :
Private Sub TextBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.Click
       Dim constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
       Dim con As New SqlConnection(constr)
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Dim da As New SqlDataAdapter("select * from TheResourceDetails where CompanyName = N'" & TextBox1.Text & "'", con)
       Dim ds As New DataSet
       ds.Clear()
       TextBox2.DataBindings.Clear()
       TextBox2.Text = ""
       da.Fill(ds, "TheResourceDetails")
       Me.TextBox2.DataBindings.Add("text", ds, "TheResourceDetails.DirectorName")
       If con.State = ConnectionState.Open Then con.Close()
   End Sub

   Private Sub TextBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseClick
       Dim constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
       Dim con As New SqlConnection(constr)
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Dim da As New SqlDataAdapter("select * from TheResourceDetails where DirectorName = N'" & TextBox2.Text & "'", con)
       Dim ds As New DataSet
       ds.Clear()
       TextBox1.DataBindings.Clear()
       TextBox1.Text = ""
       da.Fill(ds, "TheResourceDetails")
       Me.TextBox1.DataBindings.Add("text", ds, "TheResourceDetails.CompanyName")
       If con.State = ConnectionState.Open Then con.Close()
   End Sub
 طريقة تشغل الكود كلو كالاتى
اول ما الفورم تفتح بكتب اول حرف من اشركة الشركة بيظهر الاسم كلو و بختار اسم الشركة و بعد كده بدوس عالتكست لى بعدو بيتم تشغل الكود التالى لوحد لى بيقوم بعمل بحث تانى علشان يجيب اسم مدير الشركة و العكس صحيح
يعنى لو كتبت اسم مدير الشركة و عند الضغط عالتكست اسم الشركة هيتم البحث عن اسم الشركة مع العرضو فى التكست
المشكلة هنا ان الكود حجمو كبير جدا و بيخدو وقت كبير فى التنفيذ
ايه حل المشكلة دى علشان حاولت لكن بدون جدوى Huh
قال تعالى : يَامَعْشَرَ الْجِنِّ وَالإِنسِ إِنْ اسْتَطَعْتُمْ أَنْ تَنفُذُوا مِنْ أَقْطَارِ السَّمَاوَاتِ وَالأَرْضِ فَانفُذُوا لا تَنفُذُونَ إِلاّ بِسُلْطَانٍ
الرد }}}}
تم الشكر بواسطة:
#2
السلام عليكم أخي العزيز ورحمة الله وبركاته
أخي الكريم أرسل مشروع مصغر عن الفكرة لنتمكن من مساعدتك
أتمنى لك التوفيق
الرد }}}}
تم الشكر بواسطة:
#3
اتفضل اخى
انا رفعت المشروع صغير انا كل لى حاول اعملو هو
اعندى اتنين تكست بوكس و هم اسم الشركة و المدير
انا عايز لما اكتر اسم الشركة يظهر اسم المدير لوحد او اسم المدير يظهر اشم الشركة لوحدو
مع جود نفس قائمة البحث لى عملها ازاى جوجل علشان لما اكتب ايه حرف يزهر كل البيانات و فى ايه تكست من الاتنين
و شكر ليك اخى


الملفات المرفقة
.zip   WindowsApplication1.zip (الحجم : 602.43 ك ب / التحميلات : 20)
قال تعالى : يَامَعْشَرَ الْجِنِّ وَالإِنسِ إِنْ اسْتَطَعْتُمْ أَنْ تَنفُذُوا مِنْ أَقْطَارِ السَّمَاوَاتِ وَالأَرْضِ فَانفُذُوا لا تَنفُذُونَ إِلاّ بِسُلْطَانٍ
الرد }}}}
تم الشكر بواسطة:
#4
اخي الكريم :
وضعت لك تعديل على مثالك . ولكن قاعدة البيانات المرفقه لم تعمل معي . لذا في الـ Module قم بكتابة جملة الاتصال ..
Wink


الكود كالتالي :
في Module اضف
PHP كود :
Module Module1
    Public connDB 
As New SqlClient.SqlConnection
    Dim constring 
As String "جملة الاتصال Data Source ... ~~~"
 
   Public Function comDB() As SqlClient.SqlCommand
         Dim bb 
As New SqlClient.SqlCommand
        With bb
            connDB
.Close()
 
           If connDB.State <> ConnectionState.Open Then
                connDB
.ConnectionString constring
                Try
                    connDB
.Open()
 
               Catch ex As Exception
                    MsgBox
(ex.MessageMsgBoxStyle.Exclamation"")
 
                   Return bb
                    Exit 
Function
 
               End Try
 
           End If
 
           .Connection connDB
            
.CommandType CommandType.Text
            
.CommandTimeout 0
        End With
        Return bb
    End 
Function
 
   Public Sub closeDB()
 
       If connDB.State <> ConnectionState.Closed Then connDB.Close()
 
   End Sub

    Public Sub FillList
(Table As StringField As Stringtxt As TextBox)
 
       Dim col As New AutoCompleteStringCollection
        With comDB
()
 
           .CommandText "SELECT  DISTINCT " Field " FROM " Table
            Using rdDB 
= .ExecuteReader
                If rdDB
.HasRows True Then
                    While rdDB
.Read()
 
                       col.Add(rdDB.Item(Field).ToString.Trim)
 
                   End While
 
               End If
 
           End Using
        End With
        txt
.AutoCompleteSource AutoCompleteSource.CustomSource
        txt
.AutoCompleteCustomSource col
        txt
.AutoCompleteMode AutoCompleteMode.Append
    End Sub
End Module 

وفي Form1 اضف 
PHP كود :
Public Class Form1
    Private Sub TextBox2_TextChanged
(sender As ObjectAs EventArgsHandles TextBox2.TextChanged
        If TextBox2
.Focused False Then Exit Sub
        With comDB
()
 
           .CommandText "SELECT * FROM TheResourceDetails WHERE DIRECTORNAME = '" TextBox2.Text "'"
 
           Using RD = .ExecuteReader()
 
               If RD.HasRows True Then
                    RD
.Read()
 
                   TextBox1.Text RD!CompanyName
                Else
                    TextBox1
.Text ""
 
               End If
 
           End Using
        End With
    End Sub
    Private Sub TextBox1_TextChanged
(sender As ObjectAs EventArgsHandles TextBox1.TextChanged
        If TextBox1
.Focused False Then Exit Sub
        With comDB
()
 
           .CommandText "SELECT * FROM TheResourceDetails WHERE CompanyName= '" TextBox1.Text "'"
 
           Using RD = .ExecuteReader()
 
               If RD.HasRows True Then
                    RD
.Read()
 
                   TextBox2.Text RD!DIRECTORNAME
                Else
                    TextBox2
.Text ""
 
               End If
 
           End Using
        End With
    End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        FillList
("TheResourceDetails""CompanyName"TextBox1)
 
       FillList("TheResourceDetails""DIRECTORNAME"TextBox2)
 
   End Sub
End 
Class 
الرد }}}}
تم الشكر بواسطة: alims , VB_Local
#5
شكرا ليك اخى
بس للاسف ظهر مشكلة تانى و هى عندما كتب اسم الشركة و الانتقال للتكست المدير لا يظهر اسم تلقائى
و فى حالة كتب اسم المدير يتم احذف اسم الشركة
و المفروض انى لو كتب اسك الشركة يتكم اظهر اسم المدير تلقائى و العكس صحيح
يعنى لو كتبت اسم المدير يظهر اسم الشركة تلقائى
قال تعالى : يَامَعْشَرَ الْجِنِّ وَالإِنسِ إِنْ اسْتَطَعْتُمْ أَنْ تَنفُذُوا مِنْ أَقْطَارِ السَّمَاوَاتِ وَالأَرْضِ فَانفُذُوا لا تَنفُذُونَ إِلاّ بِسُلْطَانٍ
الرد }}}}
تم الشكر بواسطة:
#6
السلام عليكم أخي العزيز ورحمة الله وبركاته
أقدم لكم أخي العزيز نفس المثال أو المشروع ولكنه بقاعدة بيانات أكسس، أعتقد أنه سيفيدك،
المشروع :
.rar   khodor1985 - Retrieve Data.rar (الحجم : 85.32 ك ب / التحميلات : 35)

أتمنى لك التوفيق
الرد }}}}
تم الشكر بواسطة: alims , alims
#7
شكر ليك اخى
قال تعالى : يَامَعْشَرَ الْجِنِّ وَالإِنسِ إِنْ اسْتَطَعْتُمْ أَنْ تَنفُذُوا مِنْ أَقْطَارِ السَّمَاوَاتِ وَالأَرْضِ فَانفُذُوا لا تَنفُذُونَ إِلاّ بِسُلْطَانٍ
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Sad [Acces2007] عاجل ارجو المساعدة لدي مشكلة مع برمجة زر البحث في الاكسس saimon 4 124 24-10-16, 07:54 PM
آخر رد: saimon
  مشكله في عملية البحث علي كعبي 12 245 01-06-16, 01:21 AM
آخر رد: علي كعبي
  مثال على البحث في جدولين بالداتا قريد sql rookan 6 790 12-01-16, 01:17 PM
آخر رد: abdhassan
  [VB.NET] ارجو المساعده في كود البحث عن تاريخ DArk LiGhT 1 354 13-08-15, 11:54 PM
آخر رد: Sajad
  [سؤال] البحث اكتر من مره لا يعرض الصور sa86ra 0 353 07-04-15, 07:08 PM
آخر رد: sa86ra
  [سؤال] طريقة البحث فى قاعدة البيانات بالوقت abdala 6 1,039 26-09-14, 11:56 PM
آخر رد: abdala
  مشكلة فى كود البحث بالاسم mesm23 14 1,671 18-09-14, 08:47 AM
آخر رد: honest
  ما هو حل رسالة data type mismatch in criteria expression اثناء البحث بين تاريخين mremi78 0 788 23-08-14, 01:56 PM
آخر رد: mremi78
  البحث في نتائج البحث iamsad 2 442 18-06-14, 09:42 PM
آخر رد: iamsad
  البحث عن سجل معين في DATA Grid view السجل الاخر تصاعدي الدريساوي 1 1,830 27-05-14, 01:44 AM
آخر رد: الدريساوي

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


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