تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] البحث الذكي
#1
السلام عليكم
اريد كود بحث في داتا كرد فيو بعمود محدد
ولكن اريد ان يكون البحث ذكي 
مثال على ذالك لو احتوى العمود على اسم ( محمد عبدالله خالد) فاريد عند البحث عن هذا الاسم بمجرد كتابة ( محمد خالد ) بدون كتابة ( عبد الله ) ان يظهر الاسم كامل 
ولكم جزيل الشكر
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

هذا الحل ممكن ولكن له شروط :
1 - أن تكون الداتاجريد لديك مربوطة بـ DataTable
2 - أن تستخدم الكود التالي : 
     على فرض أن اسم الحقل الذي تريد البحث فيه هو (Name1)  - اسمه البرمجي وليس الظاهري.
كود :
Dim strALL As String = ""
       Dim str() As String = TextBox1.Text.Split(" ")
       For i = 0 To str.Length - 1
           If i = 0 Then strALL += "Name1 Like '*" + str(i) + "*' "

           strALL += " And Name1 Like '*" + str(i) + "*' "
       Next

       TryCast(DataGridView1.DataSource, DataTable).DefaultView.RowFilter =
           String.Format(strALL)

3 - أي حرف تشك فيه أنه موجود أو أنه له أكثر من طريقة بالكتابة أتركه وعوض مكانه بـ ضغطة مسافة ع الكيبورد.
4 - هذا الكود لا يراعي الترتيب، فلو أن الكلمة الأولى موجود بنهاية اسم والكلمة الثانية في بداية اسم سيعرضها ضمن النتائج.
     يعني اذا أردت أن يكون البداية والنهاية اجبارية على الترتيب عليك الاستغناء عن (*) في نهاية البداية و (*) في بداية النهاية 
     هذا في حال كان البحث عن كلمتين فقط(أنت وشطارتك في تعديل الكود).
--
بهذا الكود فيك تبحث عن أي شيء بدلالة بعض الأحرف التي تعرفها وتكون متأكد من وجودها في الاسم،
مثلاً : يعني أن تكتب حرف أو جزء من الكلمة الأولى ثم مسافة ثم حرف أو جزء من الكلمة الثانية ثم مسافة ثم حرف أو جزء من الكلمة الثالثة وهكذا..

مثلا اسم (أسامة محمود) تكتب بعدة أوجه بحسب مدخل البيانات وطريقته : فقد يكتبها (أسامة) أو (اسامه) أو (أسامه) أو (اسامة)..
فبدلا من (اسامه محمود)  تكتب  (سام محمود)  وستحصل على كل جملة فيها نفس الأحرف بالترتيب المقطعي لكل منهما.
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
#3
Taha Okla
لك مني الف تحية اخي العزيز تم حل الاشكال بفضل اللله وبمساعدتك انا شاكر تعاونك
ولتعم الفائدة الكود النهائي لعملية البحث الذكي هو كما ذكر اخي وبتعديل مني على الكود اصبح يعمل بشكل مثالي

 
كود :
 Dim strALL As String = ""
        Dim str() As String = TextBox1.Text.Split(" ")
        For i = 0 To str.Length - 1
            If i = 0 Then strALL += "Name1 Like '*" + str(i) + "*' "

            strALL += " And Name1 Like '*" + str(i) + "*' "
        Next

        Dim result As DataRow() = DataGridView1.Select(strALL)
        ' إنشاء جدول جديد لعرض النتائج
        Dim resultTable As DataTable = DataGridView1.Clone()
        For Each row As DataRow In result
            resultTable.Rows.Add(row.ItemArray)
        Next
        ' تعيين المصدر الخاص بDataGridView ليكون النتيجة
        DataGridView1.DataSource = resultTable
الرد }}}
تم الشكر بواسطة: مصمم هاوي , مصمم هاوي , سعود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] استفسار بخصوص البحث في RichTextBox SerialPort dubai.eig 2 662 18-06-25, 11:09 AM
آخر رد: dubai.eig
Rainbow [كود] البحث تلقائياً عند التبديل بين الـ RadioButton محمد مسافر 8 693 04-10-24, 02:33 AM
آخر رد: Taha Okla
Rainbow [كود] البحث وتحريك اسهم الداتا جريدفيو عند البحث محمد مسافر 2 580 19-09-24, 01:14 AM
آخر رد: محمد مسافر
  مساعدة البحث بين تاريخين أبووسم 3 544 16-08-24, 01:37 PM
آخر رد: أبووسم
  البحث بالأسم الأول فقط heem1986 6 630 03-08-24, 04:17 PM
آخر رد: heem1986
  [VB.NET] تجاهل التشكيل من الأسماء عند البحث في التيكست بوكس Khalil chiha 3 529 01-08-24, 10:28 PM
آخر رد: Khalil chiha
  يوجد خطاء فى كود البحث بواستطة الكمبوبوكس واجراء مخزن new_programer 4 402 06-07-24, 12:05 AM
آخر رد: Zuhare
  البحث بين تاريخين مع الوقت - من بداية اليوم - حتى اخر اليوم moh61 3 603 12-06-24, 08:00 PM
آخر رد: Taha Okla
  أريد البحث بإستخدام أي جزء من الكلمة و ليس أول جزء منها . CoderMM 3 604 17-04-24, 01:19 AM
آخر رد: Taha Okla
  [VB.NET] البحث باستخدام CheckedListBox لتكون نتيجة التحديد شرط لجملة الاستعلام ahmedramzyaish 0 435 19-02-24, 03:44 AM
آخر رد: ahmedramzyaish

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


يقوم بقرائة الموضوع: