تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] البحث عن اي جزء من أي كلمة في مربع نص واحد
#1
السلام عليكم
الإخوة الكرام
وجدت المشاركة التالية في مكتبة الأكواد
والسؤال:
1/ كيف نعدل في الكود بحيث يكون البحث عن (أي جزء) من (أي كلمة) ولا يشترط البحث بالكلمة كاملة.
2/ تعديل آخر في الكود منفصل عن التعديل السابق، وهو كون البحث حسب ترتيب الكلمات المدخلة في خانة البحث.
وجزاكم الله خيرا
==========
وإليكم المشاركة:
==========
كاتب الموضوع : سعود


اضف مربع نص وزر امر واداة شبيكة البيانات
التعريفات العامة توضع بمنطقة التصريحات العامة

كود :
كود :
Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb"
Dim con As New OleDb.OleDbConnection(str)
Dim sql As String = "select * from tb"
Dim ds As New DataSet
Dim da As New OleDb.OleDbDataAdapter(sql, con)
في حدث تحميل الفورم اكتب:

كود :
كود :
ds.Clear()
DataGridView1.DataSource = Nothing
DataGridView1.DataMember = Nothing

da.Fill(ds, "tb")
DataGridView1.DataSource = ds
DataGridView1.DataMember = "tb"
اكتب عدة كلمات في مربع النص مثلا (السلام عليكم ورحمة الله وبركاته)
وضع بقاعدة البيانات مختارات من هذه الكلمات واضف كلمات اخرى وانظر ماذا يفعل الكود التالي تضعه بحدث النقر لزر الامر

كود :
كود :
Dim p() As String = TextBox1.Text.Split(" ")
Dim ds1 As New DataSet


For Each s In p
Dim sql1 As String = "select * from tb where tname='" & s & "'"
Dim da1 As New OleDb.OleDbDataAdapter(sql1, con)


da1.Fill(ds1, "tb")
Next
DataGridView1.DataSource = ds1
DataGridView1.DataMember = "tb"
الرد }}}
تم الشكر بواسطة:
#2
ان كنت سوف تستخدم قواعد البيانات للإحتفاظ بكلمات معينة تستخدم كأساس لفكرة AutoSearch
حاول أن تربط بين فكرة الأخ سعود مع الكود الموجود في المرفقات

عموما و بعيدا عن قواعد البيانات ستجد في المرفقات مثالا يوضح لك كيف تتم عملية البحث بعدد معين من الحروف

الجزء الثاني من سؤالك غير مفهوم حاول توضح أكثر


الملفات المرفقة
.rar   Test_TextBoxSearch.rar (الحجم : 58.54 ك ب / التحميلات : 337)
Retired
الرد }}}
تم الشكر بواسطة: waelalmsry75 , ابراهيم ايبو
#3
(21-07-17, 09:28 AM)silverlight كتب : ان كنت سوف تستخدم قواعد البيانات للإحتفاظ بكلمات معينة تستخدم كأساس لفكرة AutoSearch
حاول أن تربط بين فكرة الأخ سعود مع الكود الموجود في المرفقات

عموما و بعيدا عن قواعد البيانات ستجد في المرفقات مثالا يوضح لك كيف تتم عملية البحث بعدد معين من الحروف

الجزء الثاني من سؤالك غير مفهوم حاول توضح أكثر

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


الملفات المرفقة
.rar   البحث عن اي كلمة في مربع النص.rar (الحجم : 94.52 ك ب / التحميلات : 239)
الرد }}}
تم الشكر بواسطة: ابو روضة
#4
جرب المثال التالي:
كود :
Public Class Form1
   Dim con As New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb")
   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       If con.State = ConnectionState.Closed Then con.Open()
       Dim dt As DataTable
       For Each h As String In TextBox1.Text.Split(" ")
           Using da = New OleDb.OleDbDataAdapter("select * from tb where tname like'%" & h & "%'", con)
               dt = New DataTable
               da.Fill(dt)
               ListBox1.DataSource = dt
               ListBox1.DisplayMember = "tname"
           End Using
       Next
   End Sub
End Class
انظر لجملة الاستعلام  وانظر قبلها لعبارة

كود :
 For each h in textbox1.text.split(" ")

جملة الاستعلام ونتيجة For في هذا الكود  هي التي تحدد النتيجة.

انظر للمثال بعد التعديل وهي فقط جزئية الاستعلام
انظر للمرفق ليست تماما  مثل الكود اعلاه.


الملفات المرفقة
.zip   البحث عن اي كلمة في مربع النص.zip (الحجم : 110.83 ك ب / التحميلات : 207)
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
#5
(21-07-17, 08:55 PM)سعود كتب : جرب المثال التالي:
كود :
Public Class Form1
   Dim con As New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb")
   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       If con.State = ConnectionState.Closed Then con.Open()
       Dim dt As DataTable
       For Each h As String In TextBox1.Text.Split(" ")
           Using da = New OleDb.OleDbDataAdapter("select * from tb where tname like'%" & h & "%'", con)
               dt = New DataTable
               da.Fill(dt)
               ListBox1.DataSource = dt
               ListBox1.DisplayMember = "tname"
           End Using
       Next
   End Sub
End Class
انظر لجملة الاستعلام  وانظر قبلها لعبارة

كود :
 For each h in textbox1.text.split(" ")

جملة الاستعلام ونتيجة For في هذا الكود  هي التي تحدد النتيجة.


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


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


الملفات المرفقة
.rar   البحث عن اي كلمة في مربع النص.rar (الحجم : 99.31 ك ب / التحميلات : 165)
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو
#6
إقتباس : يتم إعادة تحميل البيانات كلها في داتا جريد فيو، وهذا ما لا نريده
يمكنك فصل اداة الـDataGridView وتعبئتها بالكود ...مارايك؟
-------------
اقصد عدم ربطها عبر خاصية DataSource
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: waelalmsry75
#7
هل جربت المثال بعد التعديل؟
كود :
Public Class Form1

   Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb"
   Dim con As New OleDb.OleDbConnection(Str)
   Dim sql As String = "select * from tb"
   Dim dt As New DataTable
   Dim da As New OleDb.OleDbDataAdapter(sql, con)

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       dt.Clear()
       DataGridView1.DataSource = Nothing
       da.Fill(dt)
       DataGridView1.DataSource = dt
       RadioButton1.Checked = True
       Label1.Text = " عدد الصفوف: " & dt.Rows.Count
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If RadioButton1.Checked = True Then
           Dim dt1 As New DataTable
           For Each s In TextBox1.Text.Split("")
               Dim sql1 As String = "select * from tb where tname like'%" & s & "%'"
               Dim da1 As New OleDb.OleDbDataAdapter(sql1, con)
               da1.Fill(dt1)
           Next
           DataGridView1.DataSource = dt1
           Label1.Text = " عدد الصفوف: " & dt1.Rows.Count
       End If
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       Button1.PerformClick()
   End Sub
End Class
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو
#8
(23-07-17, 09:06 PM)سعود كتب : هل جربت المثال بعد التعديل؟
كود :
Public Class Form1

   Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb"
   Dim con As New OleDb.OleDbConnection(Str)
   Dim sql As String = "select * from tb"
   Dim dt As New DataTable
   Dim da As New OleDb.OleDbDataAdapter(sql, con)

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       dt.Clear()
       DataGridView1.DataSource = Nothing
       da.Fill(dt)
       DataGridView1.DataSource = dt
       RadioButton1.Checked = True
       Label1.Text = " عدد الصفوف: " & dt.Rows.Count
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If RadioButton1.Checked = True Then
           Dim dt1 As New DataTable
           For Each s In TextBox1.Text.Split("")
               Dim sql1 As String = "select * from tb where tname like'%" & s & "%'"
               Dim da1 As New OleDb.OleDbDataAdapter(sql1, con)
               da1.Fill(dt1)
           Next
           DataGridView1.DataSource = dt1
           Label1.Text = " عدد الصفوف: " & dt1.Rows.Count
       End If
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       Button1.PerformClick()
   End Sub
End Class

بارك الله فيك أخي سعود
ونفع الله بعلمك
الرد }}}
تم الشكر بواسطة:
#9
السلام عليكم اريد كود
للبحث عن نص في اكثر من ملف في فجول بيسك 6 اذا ممكن رد
الرد }}}
تم الشكر بواسطة:
#10
(11-03-20, 01:31 AM)حسين فتحي كتب : السلام عليكم اريد كود
للبحث عن نص في اكثر من ملف في فجول بيسك 6 اذا ممكن رد

وعليكم السلام
يمكنك طرح السؤال في المكان المخصص له في فجول بيسك 6 
وإن شاء الله تجد من يجيبك
الرد }}}
تم الشكر بواسطة: aaldhmshy021@gmail.com


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] استخدام كلمة برمجية كمتغير mmaalmesry 1 166 02-10-25, 08:55 AM
آخر رد: Taha Okla
  [VB.NET] استفسار بخصوص البحث في RichTextBox SerialPort dubai.eig 2 661 18-06-25, 11:09 AM
آخر رد: dubai.eig
  [VB.NET] كيف أجعل الأداة Listbox تعرض عمودين بدل عمود واحد mmaalmesry 6 474 15-10-24, 11:05 AM
آخر رد: Taha Okla
Rainbow [كود] البحث تلقائياً عند التبديل بين الـ RadioButton محمد مسافر 8 692 04-10-24, 02:33 AM
آخر رد: Taha Okla
  مطلوب كود لتغيير كلمة المرور للمستخدمين F.H.M 7 499 20-09-24, 06:05 PM
آخر رد: anes
Rainbow [كود] البحث وتحريك اسهم الداتا جريدفيو عند البحث محمد مسافر 2 579 19-09-24, 01:14 AM
آخر رد: محمد مسافر
  مساعدة البحث بين تاريخين أبووسم 3 544 16-08-24, 01:37 PM
آخر رد: أبووسم
  البحث بالأسم الأول فقط heem1986 6 630 03-08-24, 04:17 PM
آخر رد: heem1986
  [VB.NET] تجاهل التشكيل من الأسماء عند البحث في التيكست بوكس Khalil chiha 3 529 01-08-24, 10:28 PM
آخر رد: Khalil chiha
  يوجد خطاء فى كود البحث بواستطة الكمبوبوكس واجراء مخزن new_programer 4 402 06-07-24, 12:05 AM
آخر رد: Zuhare

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


يقوم بقرائة الموضوع: