بسم الله الرحمن الرحيم
لدي مشكلة في البحث عن طريق Textbox ضمن Listbox متصلة مع قاعدة بيانات sqlserver
أريد كود يعطيني نتائج البحث في Listbox بشرط !
إذا كان الجدول في قاعدة البيانات يحتوي على كلمات مثل (samsung s5 أو samsungs5) يعطيني رسالة تحذير بأن الصنف مسجل مسبقاً
أي بمعنى يتجاهل في البحث عن المسافة بين الحروف
............
أفيدونا أصحاب الخبرة ...

غير معروف كيف قمت بتعبئة البيانات هل بطريقة items.add ام بالربط bindingsource
ضع الكود كاملا
(23-09-18, 05:27 PM)r49 كتب : [ -> ]غير معروف كيف قمت بتعبئة البيانات هل بطريقة items.add ام بالربط bindingsource
ضع الكود كاملا
هذه هي الطريقة التي قمت بها بالاتصال وربط Listbox4 المراد البحث فيها عن القيم المتشابهة سواء كانت (samsung s5 أو samsungs5) يجب أن يعرفها نفس الكلمة
كود :
Dim sqlCon As New SqlConnection("Server=.\SQLEXPRESS; Database=Mobile; Integrated Security= true")
Dim adapter As SqlDataAdapter
Dim dtTypee As New DataTable
dtTypee.Clear()
adapter = New SqlDataAdapter("Select * from Typee Where ID_Types=" & AddT.ListBox1.SelectedValue, sqlCon)
adapter.Fill(dtTypee)
ListBox4.DataSource = dtTypee
ListBox4.DisplayMember = "Type"
ListBox4.ValueMember = "ID"
الكود المقتطع فيه ListBox1 و ListBox4 ولم أفهم العلاقة بينهم ولم أجد TextBox
عموما استخدم Replace لحذف المسافة، لكن إذا سألت كيف فهذه محتاجة للنظر في المشروع كامل
[quote pid='128311' dateline='1537711806']
كود :
(Dim dv As New DataView(dtTypee)
(dv.RowFilter = String.Format("Type like'%{0}%'", TextBox1.Text)
ListBox4.DataSource = dv
هذه طريقة البحث إذا قمت بالبحث عن كلمة مطابقة samsung S5 يعطيني النتيجة أنها موجودة أما قمت بالبحث في textbox عن samsungS5 لا توجد
كود :
تعمل جيدا'(" ", "")TextBox1 Replace
لا تعمل'(" ", "")ListBox4 Replace
[/quote]
مرحباً اخى rizakflash8
تعديل بسيط فقط على الكود
حتى يتم تنفيذ ما تريد تنفيذه وكما تم طلبه فى موضوعك
كود :
Dim dv As New DataView(dtTypee)
dv.RowFilter = String.Format("name like'%{0}%'", TextBox1.Text)
If dv.Count <> 0 Then
MsgBox("الصنف مسجل مسبقاً")
Else
dv.RowFilter = String.Format("name like'%{0}%'", TextBox1.Text.Replace(Space(1), ""))
If dv.Count <> 0 Then MsgBox("الصنف مسجل مسبقاً")
End If
فقط عدل كلمة name باسم العمود الذى يحتوى على الاسماء المطلوب البحث فيه
اتمنى ان يكون الكود بسيط وواضح لك
الكود وظيفته سيقوم بالبحث فى كود الاستعلام الذى سبق وقمت به
وعند ايجاد قيمة فى البحث سيقوم بعرض رسالة توضح بان الاسم موجود
لكن تذكر اذا كان السم مثلاً مسجل مثل samsung s5
وقمت انت بالبحث باسم samsung أو s5 او لو كان حرف واحد سيقوم بعرض الرسالة
ولتجنب ذلك ويتم البحث بالتطابق الكلى وليس الحرفي
فقط استبدل
كود :
"name like'%{0}%'", TextBox1.Text
بالكود التالى
كود :
"name ='{0}'", TextBox1.Text
وايضاً استبدل
كود :
"name like'%{0}%'", TextBox1.Text.Replace(Space(1), "")
بالكود التالى
كود :
"name ='{0}'", TextBox1.Text.Replace(Space(1), "")
تحياتى لك
وتمنياتى لك التوفيق
لقد قمت بالتغيرات قما قلت تماما لكن البحث لم يعطي النتائج التي أردتها
نفرض أننا قمنا بتسجيل samsung s5 في الجدول
وعند البحث عن طريق textbox وكتابة كلمة samsungs5
فإن listbox تكون فارغة ويعتبر الكلمة غير موجودة
وعند الحفظ يقوم بحفظ الكلمتين وهذا خطأ بنسبة لي.. يصبح الجدول مسجل فيه (samsung s5 و samsungs5)
هل من سبيل لحل هاته المشكلة
(24-09-18, 12:00 AM)rizakflash8 كتب : [ -> ]لقد قمت بالتغيرات قما قلت تماما لكن البحث لم يعطي النتائج التي أردتها
نفرض أننا قمنا بتسجيل samsung s5 في الجدول
وعند البحث عن طريق textbox وكتابة كلمة samsungs5
فإن listbox تكون فارغة ويعتبر الكلمة غير موجودة
وعند الحفظ يقوم بحفظ الكلمتين وهذا خطأ بنسبة لي.. يصبح الجدول مسجل فيه (samsung s5 و samsungs5)
هل من سبيل لحل هاته المشكلة
بهذه الطريقة ستحتاج ان تجعل الكود بهذا الشكل
كود :
Dim dv As New DataView(dtTypee)
dv.RowFilter = String.Format("name like'%{0}%'", TextBox1.Text)
If dv.Count <> 0 Then
MsgBox("الصنف مسجل مسبقاً")
Exit Sub
End If
dv.RowFilter = String.Format("name like'%{0}%'", TextBox1.Text.Replace(Space(1), ""))
If dv.Count <> 0 Then
MsgBox("الصنف مسجل مسبقاً")
Exit Sub
End If
For ii As Integer = 0 To dtTypee.Rows.Count - 1
dtTypee(ii)("name") = dtTypee(ii)("name").Replace(Space(1), "")
If dtTypee(ii)("name") = TextBox1.Text.Replace(Space(1), "") Then
MsgBox("الصنف مسجل مسبقاً")
Exit Sub
End If
Next
مع التنبيه تغيير كلمة name الموجود فى الفلتر والكود بالاسفل الى اسم العمود الخاص باسماء المنتجات
مع تطبيق الامر تغيير كلمة like بعلامة = لما تم شرحه مسبقاً بالاعلى حسب الحاجة لك
تحياتى لك
وتمنياتى لك التوفيق
elgokr وهو كذلك لقد كان الكود ناجح 100% كما اردته تماما
بارك الله فيك أخي ما كان عليا البحث عن الكود بل أبحث عن [b]elgokr [/b]
[b]شكرا لكم جميعا على المساعدة وفقنا الله جميعا لفعل الخير خاصة في منتدانا هذا الغالي [/b]