منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] التعديل على كود بحث - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] التعديل على كود بحث (/showthread.php?tid=34066)

الصفحات: 1 2


التعديل على كود بحث - EMADSSS - 31-03-20

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

كود :
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 & "%'"



RE: التعديل على كود بحث - حريف برمجة - 31-03-20

كود :
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



RE: التعديل على كود بحث - EMADSSS - 31-03-20

(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



RE: التعديل على كود بحث - Jounior_P - 31-03-20

Imports System.Text.RegularExpressions


RE: التعديل على كود بحث - EMADSSS - 31-03-20

اخي الكريم بعد اضافة الكود المرسل من قبلك بالاضافة لكود الاخ حريف البرمجة اصبحت عند البحث عن اسم امجد يعطيني اسماء امجد الذين بدون همزه فقط بدون اسماء أمجد الذين بهمزه ضمن الليست بوكس ثم تاتي رسالة خطا ارجو المساعدة اذا امكن كذلك الامر بالنسبة لكلمة الطيبة  والطيبه فهو يعطيني كما كتبت تماما وليس الخيارين معا اي الطيبة والطيبه وامجد وأمجد
فانا ابحث في تكست بوكس ويتم عرض النتيجة في الليست بوكس
هذا الكود الخاص بي قبل اضافة اكوادكم
كود :
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 & "%'"



RE: التعديل على كود بحث - سامي محمد - 01-04-20

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

كود :
  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



RE: التعديل على كود بحث - EMADSSS - 01-04-20

(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

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


RE: التعديل على كود بحث - سامي محمد - 01-04-20

أولا استورد مجال الاسماء هذا
كود :
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.


RE: التعديل على كود بحث - EMADSSS - 01-04-20

(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.

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


RE: التعديل على كود بحث - سامي محمد - 01-04-20

اضف الليست بكس داخل شرط البحث ليكون الشكر النهائي هكذا

كود :
    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