منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
البحث في قاعدة البيانات مع تجاهل التشكيل - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : البحث في قاعدة البيانات مع تجاهل التشكيل (/showthread.php?tid=20857)

الصفحات: 1 2


RE: البحث في قاعدة البيانات مع تجاهل التشكيل - K39 - 30-06-17

كود :
Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Me.BooksTableAdapter.Fill(Me.DataDataSet.Books)
       Me.DataGridView1.AutoGenerateColumns = False
       KeyboardArabic()
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       Me.DataGridView1.DataSource = Nothing
       Me.Texts_books.Clear()
       If Me.TextBox1.Text.Trim.Equals(String.Empty) Then Return
       Dim q = Me.DataDataSet.Books.Where(Function(x) RemoveTextTashkeel(x.Texts_books).Contains(RemoveTextTashkeel(Me.TextBox1.Text.Trim)))
       If q.Count > 0 Then
           Me.DataGridView1.DataSource = q.CopyToDataTable
           Me.DataGridView1.ClearSelection()
           Me.Texts_books.Clear()
       End If
   End Sub

   Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
       Me.Texts_books.Text = Me.DataGridView1.CurrentRow.Cells(1).Value
   End Sub

End Class
كود :
Module Module1

   Public Sub KeyboardArabic()
       InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages.Cast(Of InputLanguage). Where(Function(x) x.Culture.Name.StartsWith("ar")). FirstOrDefault()
   End Sub

   Public Function RemoveTextTashkeel(txt As String) As String
       txt = String.Concat(txt.Split(Enumerable.Range(1611, 8).Select(Function(x) ChrW(x)).ToArray))
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[اأإآ]", "ا")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ؤو]", "و")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ةه]", "ه")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[يئى]", "ى")
       Return txt
   End Function

End Module



RE: البحث في قاعدة البيانات مع تجاهل التشكيل - waelalmsry75 - 30-06-17

(30-06-17, 05:20 PM)K39 كتب :
كود :
Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Me.BooksTableAdapter.Fill(Me.DataDataSet.Books)
       Me.DataGridView1.AutoGenerateColumns = False
       KeyboardArabic()
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       Me.DataGridView1.DataSource = Nothing
       Me.Texts_books.Clear()
       If Me.TextBox1.Text.Trim.Equals(String.Empty) Then Return
       Dim q = Me.DataDataSet.Books.Where(Function(x) RemoveTextTashkeel(x.Texts_books).Contains(RemoveTextTashkeel(Me.TextBox1.Text.Trim)))
       If q.Count > 0 Then
           Me.DataGridView1.DataSource = q.CopyToDataTable
           Me.DataGridView1.ClearSelection()
           Me.Texts_books.Clear()
       End If
   End Sub

   Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
       Me.Texts_books.Text = Me.DataGridView1.CurrentRow.Cells(1).Value
   End Sub

End Class
كود :
Module Module1

   Public Sub KeyboardArabic()
       InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages.Cast(Of InputLanguage). Where(Function(x) x.Culture.Name.StartsWith("ar")). FirstOrDefault()
   End Sub

   Public Function RemoveTextTashkeel(txt As String) As String
       txt = String.Concat(txt.Split(Enumerable.Range(1611, 8).Select(Function(x) ChrW(x)).ToArray))
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[اأإآ]", "ا")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ؤو]", "و")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ةه]", "ه")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[يئى]", "ى")
       Return txt
   End Function

End Module

ممتاز أخي
لكن الكود بحاجة إلى بعض التعديلات

الآن إذا بحثت عن "احمد" بدون همزة
تظهر لي جميع النتائج "احمد" ، "أحمد" ، "آحمد" ، "إحمد"
وهذا هو المطلوب



لكن إذا بحثت عن "أحمد" أو "آحمد" أو  "إحمد" لا يعطيني أي نتيجة



فنريد أن نعرف البرنامج أنه عند البحث بتجاهل الهمزات لا فرق بين أ إ آ ا

وجزاك الله خيرا


RE: البحث في قاعدة البيانات مع تجاهل التشكيل - K39 - 01-07-17

http://vb4arb.com/vb/showthread.php?tid=20857&pid=101711#pid101711


RE: البحث في قاعدة البيانات مع تجاهل التشكيل - waelalmsry75 - 01-07-17

(01-07-17, 12:07 AM)K39 كتب : http://vb4arb.com/vb/showthread.php?tid=20857&pid=101711#pid101711

ماذا تقصد أخي؟


RE: البحث في قاعدة البيانات مع تجاهل التشكيل - waelalmsry75 - 01-07-17

(30-06-17, 06:49 PM)waelalmsry75 كتب :
(30-06-17, 05:20 PM)K39 كتب :
كود :
Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Me.BooksTableAdapter.Fill(Me.DataDataSet.Books)
       Me.DataGridView1.AutoGenerateColumns = False
       KeyboardArabic()
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       Me.DataGridView1.DataSource = Nothing
       Me.Texts_books.Clear()
       If Me.TextBox1.Text.Trim.Equals(String.Empty) Then Return
       Dim q = Me.DataDataSet.Books.Where(Function(x) RemoveTextTashkeel(x.Texts_books).Contains(RemoveTextTashkeel(Me.TextBox1.Text.Trim)))
       If q.Count > 0 Then
           Me.DataGridView1.DataSource = q.CopyToDataTable
           Me.DataGridView1.ClearSelection()
           Me.Texts_books.Clear()
       End If
   End Sub

   Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
       Me.Texts_books.Text = Me.DataGridView1.CurrentRow.Cells(1).Value
   End Sub

End Class
كود :
Module Module1

   Public Sub KeyboardArabic()
       InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages.Cast(Of InputLanguage). Where(Function(x) x.Culture.Name.StartsWith("ar")). FirstOrDefault()
   End Sub

   Public Function RemoveTextTashkeel(txt As String) As String
       txt = String.Concat(txt.Split(Enumerable.Range(1611, 8).Select(Function(x) ChrW(x)).ToArray))
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[اأإآ]", "ا")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ؤو]", "و")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ةه]", "ه")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[يئى]", "ى")
       Return txt
   End Function

End Module

ممتاز أخي
لكن الكود بحاجة إلى بعض التعديلات

الآن إذا بحثت عن "احمد" بدون همزة
تظهر لي جميع النتائج "احمد" ، "أحمد" ، "آحمد" ، "إحمد"
وهذا هو المطلوب



لكن إذا بحثت عن "أحمد" أو "آحمد" أو  "إحمد" لا يعطيني أي نتيجة



فنريد أن نعرف البرنامج أنه عند البحث بتجاهل الهمزات لا فرق بين أ إ آ ا

وجزاك الله خيرا

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


RE: البحث في قاعدة البيانات مع تجاهل التشكيل - waelalmsry75 - 03-07-17

(01-07-17, 11:43 AM)waelalmsry75 كتب :
(30-06-17, 06:49 PM)waelalmsry75 كتب :
(30-06-17, 05:20 PM)K39 كتب :
كود :
Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Me.BooksTableAdapter.Fill(Me.DataDataSet.Books)
       Me.DataGridView1.AutoGenerateColumns = False
       KeyboardArabic()
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       Me.DataGridView1.DataSource = Nothing
       Me.Texts_books.Clear()
       If Me.TextBox1.Text.Trim.Equals(String.Empty) Then Return
       Dim q = Me.DataDataSet.Books.Where(Function(x) RemoveTextTashkeel(x.Texts_books).Contains(RemoveTextTashkeel(Me.TextBox1.Text.Trim)))
       If q.Count > 0 Then
           Me.DataGridView1.DataSource = q.CopyToDataTable
           Me.DataGridView1.ClearSelection()
           Me.Texts_books.Clear()
       End If
   End Sub

   Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
       Me.Texts_books.Text = Me.DataGridView1.CurrentRow.Cells(1).Value
   End Sub

End Class
كود :
Module Module1

   Public Sub KeyboardArabic()
       InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages.Cast(Of InputLanguage). Where(Function(x) x.Culture.Name.StartsWith("ar")). FirstOrDefault()
   End Sub

   Public Function RemoveTextTashkeel(txt As String) As String
       txt = String.Concat(txt.Split(Enumerable.Range(1611, 8).Select(Function(x) ChrW(x)).ToArray))
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[اأإآ]", "ا")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ؤو]", "و")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[ةه]", "ه")
       txt = System.Text.RegularExpressions.Regex.Replace(txt, "[يئى]", "ى")
       Return txt
   End Function

End Module

ممتاز أخي
لكن الكود بحاجة إلى بعض التعديلات

الآن إذا بحثت عن "احمد" بدون همزة
تظهر لي جميع النتائج "احمد" ، "أحمد" ، "آحمد" ، "إحمد"
وهذا هو المطلوب



لكن إذا بحثت عن "أحمد" أو "آحمد" أو  "إحمد" لا يعطيني أي نتيجة



فنريد أن نعرف البرنامج أنه عند البحث بتجاهل الهمزات لا فرق بين أ إ آ ا

وجزاك الله خيرا

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

تذكير للإخوة الكرام


RE: البحث في قاعدة البيانات مع تجاهل التشكيل - K39 - 03-07-17

http://vb4arb.com/vb/showthread.php?tid=20857&pid=101711#pid101711