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

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

عندما تكتب جملة البحث عن كلمة ما ضمن حقل ما ليكن (NameF)
تكتب في شرط البحث :
كود :
"..... Where NameF Like '%" & TextBox1.Text &"%' "

من أجل تجاهل شيء ما من البحث نكتب مثلا (لتجاوز حرف L من البحث نكتب) :
كود :
" Where Replace(NameF,'L','') Like '%" & TextBox1.Text &"%' "

من أجل أكثر من تجاوز نستخدم بالعادة متغير لنبسط الأمر على عدة أسطر  .. 
كود :
Dim StrF As String = "NameF"  ' اسم الحقل االذي نريد البحث فيه
StrF = "Replace(" & StrF & ",'ّ','')"     ' الشدة
StrF = "Replace(" & StrF & ",'ء','')"     ' الهمزة
StrF = "Replace(" & StrF & ",'~','')"     ' المدة
StrF = "Replace(" & StrF & ",'ـ','')"     ' التطويلة بين الحروف
StrF = "Replace(" & StrF & ",'ْ','')"     '  السكون
StrF = "Replace(" & StrF & ",'َ','')"     ' الفتحة
StrF = "Replace(" & StrF & ",'ً','')"     ' تنوين الفتح
StrF = "Replace(" & StrF & ",'ُ','')"     ' الضمة
StrF = "Replace(" & StrF & ",'ٌ','')"     ' تنوين الضم
StrF = "Replace(" & StrF & ",'ِ','')"     ' الكسرة
StrF = "Replace(" & StrF & ",'ٍ','')"     ' تنوين الكسر

بهذه الطريقة نكون تجاوزنا كل الحركات والمد والهمزة والشدة ، بالتالي أصبح التعديل جملة البحث أسهل ونكتب فيها حينها :
كود :
"..... Where " & StrF & " Like '%" & TextBox1.Text &"%' "
السلام عليكم

ولتعم الفائدة توجد دالة انا أستخدمها في عملي وهي:

PHP كود :
Private Function RemoveDiacritics(input As String) As String
    
' تطبيع النص ليفصل الأحرف عن علامات التشكيل الخاصة بها
    Dim normalizedString As String = input.Normalize(NormalizationForm.FormD)
    Dim stringBuilder As New StringBuilder()

    ' 
تكرار كل حرف في النص المطبع
    For Each c 
As Char In normalizedString
        
' التحقق مما إذا كانت فئة اليونيكود للحرف ليست من فئة NonSpacingMark (أي ليست علامة تشكيل)
        If CharUnicodeInfo.GetUnicodeCategory(c) <> UnicodeCategory.NonSpacingMark Then
            ' 
إضافة الحرف إلى السلسلة الجديدة إذا لم يكن علامة تشكيل
            stringBuilder
.Append(c)
 
       End If
 
   Next

    
' إرجاع السلسلة الجديدة بدون علامات التشكيل
    Return stringBuilder.ToString()
End Function 

يتم استدعائها بهذا الشكل 

PHP كود :
 TextBox_Out.Text RemoveDiacritics(TextBox_Input.Text
(01-08-24, 04:21 AM)Taha Okla كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته

عندما تكتب جملة البحث عن كلمة ما ضمن حقل ما ليكن (NameF)
تكتب في شرط البحث :
كود :
"..... Where NameF Like '%" & TextBox1.Text &"%' "

من أجل تجاهل شيء ما من البحث نكتب مثلا (لتجاوز حرف L من البحث نكتب) :
كود :
" Where Replace(NameF,'L','') Like '%" & TextBox1.Text &"%' "

من أجل أكثر من تجاوز نستخدم بالعادة متغير لنبسط الأمر على عدة أسطر  .. 
كود :
Dim StrF As String = "NameF"  ' اسم الحقل االذي نريد البحث فيه
StrF = "Replace(" & StrF & ",'ّ','')"     ' الشدة
StrF = "Replace(" & StrF & ",'ء','')"     ' الهمزة
StrF = "Replace(" & StrF & ",'~','')"     ' المدة
StrF = "Replace(" & StrF & ",'ـ','')"     ' التطويلة بين الحروف
StrF = "Replace(" & StrF & ",'ْ','')"     '  السكون
StrF = "Replace(" & StrF & ",'َ','')"     ' الفتحة
StrF = "Replace(" & StrF & ",'ً','')"     ' تنوين الفتح
StrF = "Replace(" & StrF & ",'ُ','')"     ' الضمة
StrF = "Replace(" & StrF & ",'ٌ','')"     ' تنوين الضم
StrF = "Replace(" & StrF & ",'ِ','')"     ' الكسرة
StrF = "Replace(" & StrF & ",'ٍ','')"     ' تنوين الكسر

بهذه الطريقة نكون تجاوزنا كل الحركات والمد والهمزة والشدة ، بالتالي أصبح التعديل جملة البحث أسهل ونكتب فيها حينها :
كود :
"..... Where " & StrF & " Like '%" & TextBox1.Text &"%' "

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