وعليكم السلام ورحمة الله وبركاته
عندك أكثر من مشكلة :
- مشكلة في مكان تعريف المتغير ومجاله.
- مشكلة في التعويض، وعما تبحث.
- مشكلة بحلقة الدوران.
لن أشير إلى مكان الخطأ بالتحديد،
ولكن دقق بين الكودين وستصل لمكان وسبب هذه الأخطاء ولن تنسى هذه الملاحظة أبداً.
الكود :
كود :
dt.Clear()
Label1.Hide()
Dim txt As String = ""
'الكود منقول من مشاركة الأستاذ حريف برمجة
For Each s As String In textSerch.Text
s = Regex.Replace(s, "[أإآا]", "[أإآا]")
s = Regex.Replace(s, "[هة]", "[هة]")
s = Regex.Replace(s, "[ىي]", "[ىي]")
s = Regex.Replace(s, "[وؤ]", "[وؤ]")
txt &= s
If textSerch.Text.Trim = "" Then Label1.Visible = False : Exit Sub
If textSerch.Text.Trim.Length < 3 Then
Label1.Visible = True
Exit Sub
End If
dt.Clear()
Label1.Hide()
If textSerch.Text.Trim.Length >= 3 Then
da.SelectCommand.Parameters.Clear()
da.SelectCommand.Parameters.AddWithValue("@c", "%" & txt.Trim & "%")
da.Fill(dt)
DataGridView1.DataSource = dt
DataGridView1.ClearSelection()
If dt.Rows.Count = 0 Then Label1.Show()
End If
If textSerch.Text = "" Then
Label2.Show()
Else
Label2.Hide()
End If
Next
بالتوفيق ..
ملاحظة : كود مميز جداً، لو كان لديك بعض الوقت، نتمنى أن تصنع مثال للبحث به وتشمل كل الحالات وترفقه كمرجع لطلاب العلم في هذا المنتدى..
ان شاء الله
تم تصحيح الكود واصبح شغال كالاتي
كود :
dt.Clear()
Label1.Hide()
Dim txt As String = ""
For Each s As Char In textSerch.Text
If s = "أ" Or s = "إ" Or s = "آ" Or s = "ا" Then
txt &= "[أإآا]"
ElseIf s = "ه" Or s = "ة" Then
txt &= "[هة]"
ElseIf s = "ى" Or s = "ي" Then
txt &= "[ىي]"
ElseIf s = "و" Or s = "ؤ" Then
txt &= "[وؤ]"
Else
txt &= s
End If
Next
If textSerch.Text.Trim = "" Then
Label1.Visible = False
Exit Sub
End If
If textSerch.Text.Trim.Length < 3 Then
Label1.Visible = True
Exit Sub
End If
da.SelectCommand.Parameters.Clear()
da.SelectCommand.Parameters.AddWithValue("@c", "%" & txt.Trim & "%")
da.Fill(dt)
DataGridView1.DataSource = Nothing
DataGridView1.DataSource = dt
DataGridView1.ClearSelection()
If dt.Rows.Count = 0 Then
Label1.Show()
End If
If textSerch.Text = "" Then
Label2.Show()
Else
Label2.Hide()
End If
الكود الذي أرفقته هو الكود بعد التصحيح..
والكود الذي وضعته أنت كتصحيح للكود :
يحتوي على خطأ بالتعويض ... لن يعمل معك في كل الحالات،
ربما يعمل معك هنا بسبب For Each ولكن ان استخدمته في موضع آخر بما سيظهر الخطأ..
ولن تحصل على ما ترجوه من حل، فتظن أنك كتبت كوداً صحيحاً.
ليس المهم أن يعمل الكود، المهم أن تعرف كيف تقرأ الكود وكأنك أنت المترجم(Compiler) الذي سينفذ الكود..
حاولت على الكود السابق الذي ظهر لي الخطا ولم اعرف سوف احاول ان اجد الخطاء وهو الكود الافضل لي وان لم اعرف نتمنى الافاده لمن عنده المعرفه ، شكراُ استاذ/ طه.