منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : التعديل على كود بحث
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
احبابي في الله انا استخدم هذا الكود للبحث ضمن ليست بوكس ويعمل بشكل جيد
لو سمحتم كيف بقدر اثناء البحث عن اسم يتم تجاهل الهمزات في الكلمة
فلو كتبت اسم أمجد بهمزه أو امجد بلا همزة يعطيني نفس النتيجة او إسماعيل بهمزه او اسماعيل بلا همزه وشكرا سلفا ياريت المساعدة
او حرف ه و ة هذا هو الكود المستخدم من قبلي كاملا قبل اضافة اكوادكم

كود :
Private Sub TextBox9_TextChanged(sender As Object, e As EventArgs) Handles TextBox9.TextChanged
        Dim i As Integer = ListBox1.FindString(TextBox9.Text)
        ListBox1.SelectedIndex = i
        ' BindingSource2.Filter = "Name like '%" & TextBox9.Text & "%'"
كود :
For Each s As String In TextBox9.Text
    s = Regex.Replace(s, "[أإآا]", "[أإآا]")
    s = Regex.Replace(s, "[هة]", "[هة]")
    s = Regex.Replace(s, "[ىي]", "[ىي]")
    s = Regex.Replace(s, "[وؤ]", "[وؤ]")
  txt &= s
BindingSource2.Filter = "Name like '%" & txt & "%'"
Next
(31-03-20, 06:19 AM)حريف برمجة كتب : [ -> ]
كود :
For Each s As String In TextBox9.Text
    s = Regex.Replace(s, "[أإآا]", "[أإآا]")
    s = Regex.Replace(s, "[هة]", "[هة]")
    s = Regex.Replace(s, "[ىي]", "[ىي]")
    s = Regex.Replace(s, "[وؤ]", "[وؤ]")
  txt &= s
BindingSource2.Filter = "Name like '%" & txt & "%'"
Next

اخي الكريم الكود لايعمل لا اعرف السبب يعطي خطا تحت كلمة
كود :
Regex
Imports System.Text.RegularExpressions
اخي الكريم بعد اضافة الكود المرسل من قبلك بالاضافة لكود الاخ حريف البرمجة اصبحت عند البحث عن اسم امجد يعطيني اسماء امجد الذين بدون همزه فقط بدون اسماء أمجد الذين بهمزه ضمن الليست بوكس ثم تاتي رسالة خطا ارجو المساعدة اذا امكن كذلك الامر بالنسبة لكلمة الطيبة  والطيبه فهو يعطيني كما كتبت تماما وليس الخيارين معا اي الطيبة والطيبه وامجد وأمجد
فانا ابحث في تكست بوكس ويتم عرض النتيجة في الليست بوكس
هذا الكود الخاص بي قبل اضافة اكوادكم
كود :
Private Sub TextBox9_TextChanged(sender As Object, e As EventArgs) Handles TextBox9.TextChanged
       Dim i As Integer = ListBox1.FindString(TextBox9.Text)
       ListBox1.SelectedIndex = i
        BindingSource2.Filter = "Name like '%" & TextBox9.Text & "%'"
إن كنت تبحث داخل اليست فاستخدم الكود هذا افضل حيث سيعرض لك النتائج واحدة تلو الاخرى

كود :
  Dim Ls As New ArrayList
    Dim I As Integer
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Ls.Count = 0 Then
            Dim Txt As String = Nothing
            For Each s As String In TextBox1.Text
                s = Regex.Replace(s, "[أإآا]", "[أإآا]")
                s = Regex.Replace(s, "[هة]", "[هة]")
                s = Regex.Replace(s, "[ىي]", "[ىي]")
                s = Regex.Replace(s, "[وؤ]", "[وؤ]")
                Txt &= s
            Next
            For x As Integer = 0 To ListBox1.Items.Count - 1
                If Regex.IsMatch(ListBox1.Items(x), Txt) = True Then
                    Ls.Add(x)
                End If
            Next
            If Ls.Count <> 0 Then ListBox1.SelectedIndex = Ls(0)
        Else
            I += 1
            If I > Ls.Count - 1 Then I = 0
            ListBox1.SelectedIndex = Ls(I)
        End If
    End Sub
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Ls.Clear()
        I = 0
    End Sub
(01-04-20, 01:32 AM)سامي محمد كتب : [ -> ]إن كنت تبحث داخل اليست فاستخدم الكود هذا افضل حيث سيعرض لك النتائج واحدة تلو الاخرى

كود :
  Dim Ls As New ArrayList
    Dim I As Integer
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Ls.Count = 0 Then
            Dim Txt As String = Nothing
            For Each s As String In TextBox1.Text
                s = Regex.Replace(s, "[أإآا]", "[أإآا]")
                s = Regex.Replace(s, "[هة]", "[هة]")
                s = Regex.Replace(s, "[ىي]", "[ىي]")
                s = Regex.Replace(s, "[وؤ]", "[وؤ]")
                Txt &= s
            Next
            For x As Integer = 0 To ListBox1.Items.Count - 1
                If Regex.IsMatch(ListBox1.Items(x), Txt) = True Then
                    Ls.Add(x)
                End If
            Next
            If Ls.Count <> 0 Then ListBox1.SelectedIndex = Ls(0)
        Else
            I += 1
            If I > Ls.Count - 1 Then I = 0
            ListBox1.SelectedIndex = Ls(I)
        End If
    End Sub
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Ls.Clear()
        I = 0
    End Sub

اخي الكريم الكود لا يعمل راح ارفق مشروع مصغير ياريت المساعدة
كل الذي اريده اذا بحثت عن اسم احمد يضهر لي احمد وأحمد
واذا بحثت عن كلمة الطيبه يضهر لي في التكست بوكس الطيبه والطيبة ياريت في حل لذلك
أولا استورد مجال الاسماء هذا
كود :
Imports System.Text.RegularExpressions
بعد ذلك استبدل الكود الذي في حدث الكتابة للتكست بهذا

كود :
  Dim i As Integer = ListBox1.FindString(TextBox9.Text)
        ListBox1.SelectedIndex = i
        GgDataGridView.DataSource = Nothing
        GgDataGridView.Rows.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox9.Text
            x = System.Text.RegularExpressions.Regex.Replace(x, "[إأآا]", "[إأآا]")
            x = System.Text.RegularExpressions.Regex.Replace(x, "[هة]", "[هة]")
            x = System.Text.RegularExpressions.Regex.Replace(x, "[وؤ]", "[وؤ]")
            x = System.Text.RegularExpressions.Regex.Replace(x, "[يى]", "[يى]")
            Txt &= x
        Next
        For Each x As DataRow In EeeeDataSet.gg.Rows
            If System.Text.RegularExpressions.Regex.IsMatch(x(1), "^" & Txt) = True Then
                GgDataGridView.Rows.Add()
                GgDataGridView(0, N).Value = x(0)
                GgDataGridView(1, N).Value = x(1)
                GgDataGridView(2, N).Value = x(2)
                N += 1
            End If
        Next



او حمله من المرفقات بعد التعديل

آسف لا داعي لكتابة هذا الجزء قبل كل عملية استبدال ان تم استيراد مجال الأسماء
System.Text.RegularExpressions.
(01-04-20, 05:40 AM)سامي محمد كتب : [ -> ]أولا استورد مجال الاسماء هذا
كود :
Imports System.Text.RegularExpressions
بعد ذلك استبدل الكود الذي في حدث الكتابة للتكست بهذا

كود :
  Dim i As Integer = ListBox1.FindString(TextBox9.Text)
        ListBox1.SelectedIndex = i
        GgDataGridView.DataSource = Nothing
        GgDataGridView.Rows.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox9.Text
            x = System.Text.RegularExpressions.Regex.Replace(x, "[إأآا]", "[إأآا]")
            x = System.Text.RegularExpressions.Regex.Replace(x, "[هة]", "[هة]")
            x = System.Text.RegularExpressions.Regex.Replace(x, "[وؤ]", "[وؤ]")
            x = System.Text.RegularExpressions.Regex.Replace(x, "[يى]", "[يى]")
            Txt &= x
        Next
        For Each x As DataRow In EeeeDataSet.gg.Rows
            If System.Text.RegularExpressions.Regex.IsMatch(x(1), "^" & Txt) = True Then
                GgDataGridView.Rows.Add()
                GgDataGridView(0, N).Value = x(0)
                GgDataGridView(1, N).Value = x(1)
                GgDataGridView(2, N).Value = x(2)
                N += 1
            End If
        Next



او حمله من المرفقات بعد التعديل

آسف لا داعي لكتابة هذا الجزء قبل كل عملية استبدال ان تم استيراد مجال الأسماء
System.Text.RegularExpressions.

شكرا اخي الكريم على مجهودك الرائع الكود يعمل بشك جيد
لكن انا كنت حابب عملية الفلترة تتم داخل الليست بوكس أيضا وليس الداتا كريت فيو فقط
اضف الليست بكس داخل شرط البحث ليكون الشكر النهائي هكذا

كود :
    GgDataGridView.DataSource = Nothing
        ListBox1.DataSource = Nothing
        GgDataGridView.Rows.Clear()
        ListBox1.Items.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox9.Text
            x = Regex.Replace(x, "[إأآا]", "[إأآا]")
            x = Regex.Replace(x, "[هة]", "[هة]")
            x = Regex.Replace(x, "[وؤ]", "[وؤ]")
            x = Regex.Replace(x, "[يى]", "[يى]")
            Txt &= x
        Next
        For Each x As DataRow In EeeeDataSet.gg.Rows
            If Regex.IsMatch(x(1), "^" & Txt) = True Then
                GgDataGridView.Rows.Add()
                GgDataGridView(0, N).Value = x(0)
                GgDataGridView(1, N).Value = x(1)
                GgDataGridView(2, N).Value = x(2)
                ListBox1.Items.Add(x(1))
                N += 1
            End If
        Next
الصفحات : 1 2