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