تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلتي مع البحث في listbox
#1
Smile 
بسم الله الرحمن الرحيم 
لدي مشكلة في البحث عن طريق Textbox ضمن Listbox متصلة مع قاعدة بيانات sqlserver
أريد كود يعطيني نتائج البحث في Listbox بشرط !
إذا كان الجدول في قاعدة البيانات يحتوي على كلمات مثل (samsung s5 أو samsungs5) يعطيني رسالة تحذير بأن الصنف مسجل مسبقاً
أي بمعنى يتجاهل في البحث عن المسافة بين الحروف
............
أفيدونا أصحاب الخبرة ... Confused
الرد }}}
تم الشكر بواسطة:
#2
غير معروف كيف قمت بتعبئة البيانات هل بطريقة items.add ام بالربط bindingsource

ضع الكود كاملا
الرد }}}
تم الشكر بواسطة:
#3
(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"
الرد }}}
تم الشكر بواسطة:
#4
الكود المقتطع فيه ListBox1 و ListBox4 ولم أفهم العلاقة بينهم ولم أجد TextBox

عموما استخدم Replace لحذف المسافة، لكن إذا سألت كيف فهذه محتاجة للنظر في المشروع كامل
الرد }}}
تم الشكر بواسطة:
#5
[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]
الرد }}}
تم الشكر بواسطة: elgokr
#6
مرحباً اخى 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), "")

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: rizakflash8
#7
لقد قمت بالتغيرات قما قلت تماما لكن البحث لم يعطي النتائج التي أردتها 
نفرض أننا قمنا بتسجيل samsung s5 في الجدول
وعند البحث عن طريق textbox وكتابة كلمة samsungs5 
فإن listbox تكون فارغة ويعتبر الكلمة غير موجودة 
وعند الحفظ يقوم بحفظ الكلمتين وهذا خطأ بنسبة لي..  يصبح الجدول مسجل فيه (samsung s5 و samsungs5)
هل من سبيل لحل هاته المشكلة
الرد }}}
تم الشكر بواسطة: elgokr
#8
(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 بعلامة = لما تم شرحه مسبقاً بالاعلى حسب الحاجة لك

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: rizakflash8
#9
Star 
elgokr    وهو كذلك لقد كان الكود ناجح 100% كما اردته تماما


بارك الله فيك أخي ما كان عليا البحث عن الكود بل أبحث عن [b]elgokr  [/b]

[b]شكرا لكم جميعا على المساعدة وفقنا الله جميعا لفعل الخير خاصة في منتدانا هذا الغالي [/b]
الرد }}}
تم الشكر بواسطة: elgokr
#10
الشكر لله والحمد لله
والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


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



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم