وعليكم السلام ورحمة الله وبركاته
هذا الحل ممكن ولكن له شروط :
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 - هذا الكود لا يراعي الترتيب، فلو أن الكلمة الأولى موجود بنهاية اسم والكلمة الثانية في بداية اسم سيعرضها ضمن النتائج.
يعني اذا أردت أن يكون البداية والنهاية اجبارية على الترتيب عليك الاستغناء عن (*) في نهاية البداية و (*) في بداية النهاية
هذا في حال كان البحث عن كلمتين فقط(أنت وشطارتك في تعديل الكود).
--
بهذا الكود فيك تبحث عن أي شيء بدلالة بعض الأحرف التي تعرفها وتكون متأكد من وجودها في الاسم،
مثلاً : يعني أن تكتب حرف أو جزء من الكلمة الأولى ثم مسافة ثم حرف أو جزء من الكلمة الثانية ثم مسافة ثم حرف أو جزء من الكلمة الثالثة وهكذا..
مثلا اسم (أسامة محمود) تكتب بعدة أوجه بحسب مدخل البيانات وطريقته : فقد يكتبها (أسامة) أو (اسامه) أو (أسامه) أو (اسامة)..
فبدلا من (اسامه محمود) تكتب (سام محمود) وستحصل على كل جملة فيها نفس الأحرف بالترتيب المقطعي لكل منهما.