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

نسخة كاملة : التعديل على كود بحث
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
(01-04-20, 03:36 PM)سامي محمد كتب : [ -> ]اضف الليست بكس داخل شرط البحث ليكون الشكر النهائي هكذا

كود :
    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
شكرا اخي الكريم كلك ذوق الله يعطيك العافي
عندي سؤال بدي عذبك هلق لو كانت عملية البحث هذه فقط ضمن الليسيت بوكس وبدون الداتا كريت قيو  مو افضل لان نتيجة الفلترة في الليست بوكس تلقائيا النتيجة تضهر في الداتا كريت قيو وشكرا لك مرة أخرى
كود :
 ListBox1.DataSource = Nothing
        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
                ListBox1.Items.Add(x(1))
                N += 1
            End If
        Next

في الخدمة
(01-04-20, 08:53 PM)سامي محمد كتب : [ -> ]
كود :
 ListBox1.DataSource = Nothing
        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
                ListBox1.Items.Add(x(1))
                N += 1
            End If
        Next

في الخدمة

شكرا لك اخي الكريم جازاك الله خيرا
(02-04-20, 12:10 AM)EMADSSS كتب : [ -> ]
(01-04-20, 08:53 PM)سامي محمد كتب : [ -> ]
كود :
 ListBox1.DataSource = Nothing
        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
                ListBox1.Items.Add(x(1))
                N += 1
            End If
        Next

في الخدمة

شكرا لك اخي الكريم جازاك الله خيرا
اخي الكريم عم عذبك معي الاكواد التي ارسلتها لي تعمل بشك ممتاز في حال كان الاتصال بقاعدة البيانات مباشراً الله يعطيك العافي
ولكن عندما نقلت الاكواد لبرنامجي الاساسي والمتصل بقاعدة البيانات بشكل غير مباشر عم يعطيني الكود خطأ في هذه الجملة وذلك باسم القاعدة والجدول  رغم انني غيرته
كود :
 For Each x As DataRow In EeeeDataSet.gg.Rows
عملية البحث السابقة ليست مباشرة بل يتم البحث في الداتا سيت وليس بقاعدة بيانات اكسس ....
لابد من وجود اختلاف بين مثالك الذي رفعته وبين المشروعك
----
ربط قاعدة البيانات باالاكواد سيكون الامر اسهل بكثير وعالجتها كذلك
(02-04-20, 02:54 PM)سامي محمد كتب : [ -> ]عملية البحث السابقة ليست مباشرة بل يتم البحث في الداتا سيت وليس بقاعدة بيانات اكسس ....
لابد من وجود اختلاف بين مثالك الذي رفعته وبين المشروعك
----
ربط قاعدة البيانات باالاكواد سيكون الامر اسهل بكثير وعالجتها كذلك

اخي الكريم راح ارسل لك مشروع مطابق جدا لمشروعي الاساسي كل ماارغبه منك بالمساعدة
1- كود البحث في زر  يعطي فلترة للاسماء متجاهل الهمزات في الداتا  والليست بوكس ( مثل أحمد واحمد ) 
2- كود بحث في زر يعطي فلترة في الداتا كريت فيو فقط ومتجاهلا الهمزات ايضا و ه و ة  لكن ارجو منك هنا فقط   ان يكون البحث في عمود الاسم في الداتا وليس من الليست
عسا ان اكون قد وصلت لك الفكرة جيدا وشكرا جدا جدا لك سلفا وجازاك الله خيرا
في زر : البحث وتجاهل الهمزات في الداتا والليست

كود :
  DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        ListBox1.DataSource = Nothing
        ListBox1.Items.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox4.Text
            x = Regex.Replace(x, "[إأآا]", "[إأآا]")
            x = Regex.Replace(x, "[هة]", "[هة]")
            x = Regex.Replace(x, "[وؤ]", "[وؤ]")
            x = Regex.Replace(x, "[يى]", "[يى]")
            Txt &= x
        Next
        'BindingSource1هنا الخطا فقط بكلمة
        For Each x As DataRow In DataSet1.Tables(0).Rows
            If Regex.IsMatch(x(1), "^" & Txt) = True Then
                DataGridView1.Rows.Add()
                DataGridView1(0, N).Value = x(0)
                DataGridView1(1, N).Value = x(1)
                DataGridView1(2, N).Value = x(2)
                ListBox1.Items.Add(x(1))
                N += 1
            End If
        Next

وفي زر : البحث وتجاهل الهمزات في الدات فقط

كود :
 DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox4.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 DataSet1.Tables(0).Rows
            If Regex.IsMatch(x(1), "^" & Txt) = True Then
                DataGridView1.Rows.Add()
                DataGridView1(0, N).Value = x(0)
                DataGridView1(1, N).Value = x(1)
                DataGridView1(2, N).Value = x(2)
                N += 1
            End If
        Next
(02-04-20, 10:18 PM)سامي محمد كتب : [ -> ]في زر : البحث وتجاهل الهمزات في الداتا والليست

كود :
  DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        ListBox1.DataSource = Nothing
        ListBox1.Items.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox4.Text
            x = Regex.Replace(x, "[إأآا]", "[إأآا]")
            x = Regex.Replace(x, "[هة]", "[هة]")
            x = Regex.Replace(x, "[وؤ]", "[وؤ]")
            x = Regex.Replace(x, "[يى]", "[يى]")
            Txt &= x
        Next
        'BindingSource1هنا الخطا فقط بكلمة
        For Each x As DataRow In DataSet1.Tables(0).Rows
            If Regex.IsMatch(x(1), "^" & Txt) = True Then
                DataGridView1.Rows.Add()
                DataGridView1(0, N).Value = x(0)
                DataGridView1(1, N).Value = x(1)
                DataGridView1(2, N).Value = x(2)
                ListBox1.Items.Add(x(1))
                N += 1
            End If
        Next

وفي زر : البحث وتجاهل الهمزات في الدات فقط

كود :
 DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        Dim N As Integer
        Dim Txt As String = Nothing
        For Each x As String In TextBox4.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 DataSet1.Tables(0).Rows
            If Regex.IsMatch(x(1), "^" & Txt) = True Then
                DataGridView1.Rows.Add()
                DataGridView1(0, N).Value = x(0)
                DataGridView1(1, N).Value = x(1)
                DataGridView1(2, N).Value = x(2)
                N += 1
            End If
        Next

شكرا اخي الكريم كله تمام الله يعطيك العافي
عم عذبك معي عندي سؤالين
1- بعد الفلترة في التكست بوكس  فقط اريد لما اضغط بالماوس على احد الاسماء المفلترة في التكست تضهر المعلومات الخاصة به في الحقول ( اسم - ملاحظة وغيره)  وتحديد اسمه في والداتا كريت اي ينقلني لسجلاته في الداتا وتضهر بياناته في الحقول
2- في البحث في الداتا كريت كيف بقدر غير رقم العمود الذي يبحث به فمثلا لا اريد البحث في العمود الاول انما الثاني او الثالث حسب كودك المرسل لي
وشكرا فهذه المشاكل لم تكن موجودة عندي بالاكواد السابقة قبل ان اتجاهل الهمزات وشكرا سلفا
عسا ان تكون مشكلتي وضحت بعد عملية البحث تضهر لي اسماء في التكست مثل امجد علي وامجد القاسم نتيجة البحث

اريد لما اضغط بالموس على احد هذه الاسماء تضهر بياناته في الحقول الخاصة بهذا الاسم ويضهر اسمه في اول صف في الداتا كريت ومحدد رقمه في الداتا كريت بلون مختلف وشكرا للجميع للمساعدة
أخ عماد انت استخدمة طريقة الربط الديناميكي بين الحقول واليست بكس و الكمبوبكس والداتا قريد ... بخاصية BindingSource  عند استخدام هذا الطريقة سيكون هناك ارتباط بين كل هذه الادوات حتى لو حاولت ان تحذف عنصر من اليست بكس او الكمبوبكس اوكذلك الداتا قريد لا يسمح لك بذلك الا اذا فكيت هذا الارتباط بـــ DataGridView1.DataSource = Nothing واذا انفك الارتباط فلا تيم التنقل بين السجلات كما هو الحال في عملية تعبأتها بطريقتنا

ولكن اسلم حل هو تهيئة الأداة  BindingSource لكي نتمكن من البحث فيها بكل المدخلات .... 

انظر إلى هذا الأجراء لقد قمت بحذف جميع الاحرف المهموزة وكذلك الهمزة المنقوطه ... إلخ
واصبح النص في ادات BindingSource بهية واحده .... تم استبدال جميع الــ إأآ بــــ ا  في جميع الكلمات وليست في كلمة احمد .... وكذلك الحال بالنسبة للهاء .... إلخ

في صفحة تحميل الفورم احذف هذا الكود
 
كود :
BindingSource2 = New BindingSource(DataSet1, "ARSH")
واستبدله بهذا

كود :
BindingSource2 = New BindingSource
            For Each x As DataRow In DataSet1.Tables(0).Rows

                x("NAme") = Regex.Replace(x("NAme"), "[إآأ]", "ا")
                x("NAme") = Regex.Replace(x("NAme"), "[هة]", "ه")
                x("NAme") = Regex.Replace(x("NAme"), "[يى]", "اي")
                x("NAme") = Regex.Replace(x("NAme"), "[وؤ]", "و")
                BindingSource2.List.Add(x.ItemArray)

            Next

وفي حدث النقر على زر البحث اكتب هذا

كود :
 Dim Txt As String = Nothing
        For Each x As String In TextBox4.Text
            x = Regex.Replace(x, "[إأآا]", "ا")
            x = Regex.Replace(x, "[هة]", "ه")
            x = Regex.Replace(x, "[وؤ]", "و")
            x = Regex.Replace(x, "[يى]", "ي")
            Txt &= x
        Next

وفي خانة البحث عن النص استبدل هذا الكود

كود :
  BindingSource2.Filter = "Name like '%" & TextBox4.Text & "%'"



بهذا

كود :
                BindingSource2.Filter = "Name like '%" & Txt & "%'"

لكن لا تستطيع البحث باليست بكس لوحدها او الداتا قريد لوعدها ...لانها كما قلت لك مرتبطة ببعضها

وبالنسبة لسؤلك الثاني انش كمبوبكس و اضف فيه عدد الاعمدة المراد البحث بها وبحسب اختيار العنصر يتم البحث
-----
وان كان هنك اي اشكل لن يقصر احد في هذا المنتدى
(03-04-20, 09:38 PM)سامي محمد كتب : [ -> ]أخ عماد انت استخدمة طريقة الربط الديناميكي بين الحقول واليست بكس و الكمبوبكس والداتا قريد ... بخاصية BindingSource  عند استخدام هذا الطريقة سيكون هناك ارتباط بين كل هذه الادوات حتى لو حاولت ان تحذف عنصر من اليست بكس او الكمبوبكس اوكذلك الداتا قريد لا يسمح لك بذلك الا اذا فكيت هذا الارتباط بـــ DataGridView1.DataSource = Nothing واذا انفك الارتباط فلا تيم التنقل بين السجلات كما هو الحال في عملية تعبأتها بطريقتنا

ولكن اسلم حل هو تهيئة الأداة  BindingSource لكي نتمكن من البحث فيها بكل المدخلات .... 

انظر إلى هذا الأجراء لقد قمت بحذف جميع الاحرف المهموزة وكذلك الهمزة المنقوطه ... إلخ
واصبح النص في ادات BindingSource بهية واحده .... تم استبدال جميع الــ إأآ بــــ ا  في جميع الكلمات وليست في كلمة احمد .... وكذلك الحال بالنسبة للهاء .... إلخ

في صفحة تحميل الفورم احذف هذا الكود
 
كود :
BindingSource2 = New BindingSource(DataSet1, "ARSH")
واستبدله بهذا

كود :
BindingSource2 = New BindingSource
            For Each x As DataRow In DataSet1.Tables(0).Rows

                x("NAme") = Regex.Replace(x("NAme"), "[إآأ]", "ا")
                x("NAme") = Regex.Replace(x("NAme"), "[هة]", "ه")
                x("NAme") = Regex.Replace(x("NAme"), "[يى]", "اي")
                x("NAme") = Regex.Replace(x("NAme"), "[وؤ]", "و")
                BindingSource2.List.Add(x.ItemArray)

            Next

وفي حدث النقر على زر البحث اكتب هذا

كود :
 Dim Txt As String = Nothing
        For Each x As String In TextBox4.Text
            x = Regex.Replace(x, "[إأآا]", "ا")
            x = Regex.Replace(x, "[هة]", "ه")
            x = Regex.Replace(x, "[وؤ]", "و")
            x = Regex.Replace(x, "[يى]", "ي")
            Txt &= x
        Next

وفي خانة البحث عن النص استبدل هذا الكود

كود :
  BindingSource2.Filter = "Name like '%" & TextBox4.Text & "%'"



بهذا

كود :
                BindingSource2.Filter = "Name like '%" & Txt & "%'"

لكن لا تستطيع البحث باليست بكس لوحدها او الداتا قريد لوعدها ...لانها كما قلت لك مرتبطة ببعضها

وبالنسبة لسؤلك الثاني انش كمبوبكس و اضف فيه عدد الاعمدة المراد البحث بها وبحسب اختيار العنصر يتم البحث
-----
وان كان هنك اي اشكل لن يقصر احد في هذا المنتدى
شكرا اخي الكريم عذبتك معي
الصفحات : 1 2