منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : البحث المتعدد بقواعد البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته 
كيف ابحث بحقل واحد عن عدة كلمات 
مثلا لدي خلية  تحوي التالي  منتدى فيجوال بيسك لكل العرب 
معلوم تفصل بين الكلمات مسافات انا ريد ان ابحث كالتالي اكتب من كل كلمة حرفين اوحرف  وافصل بمسافة 
اي اكتب  من في بي    فيظهر لي النتيجة منتدى فيجوال بيسك لكل العرب 
استخدم السكول سيرفر اريد استعلاما يفعل ذلك
وشكرا
كود :
Dim SQLDAP As New SqlDataAdapter("SELECT * FROM TabelName where Name like '%" + TextBox1.Text + "%'", Con)
       Dim ds As New DataSet
       SQLDAP.Fill(ds)
       ' فرضاً لو أرتد عرض النتيجه في داتا قريد فيو
       DataGridView1.dataSource = dt
اخ عادل انا استخدم هذا الكود  ولكن عندما تضع فراغ وتكتب الكلمة الثالثة يذهب الى لا شيء ارجو ان تكون الفكرة وصلت 
وشكرا على ردك السريع وانا استخدم هذا الكود
 Dim sqltb007 As String = "SELECT        TOP (100) PERCENT ID, b1, b2, b3 FROM TB7 WHERE        (b3 LIKE '%" & txttbl007 & "%') ORDER BY ID "
أبد ياغالي تحت أمرك وأن شاء الله تنحل مشكلتك 

أنا عملت لك مثال وهو عبـاره عن البحث بطريقتين أختر أي طريقه تناسبك 
الطريقه الأولى تعبة الكمبو بكس 
والثانيه بدون كمبو بكس أنا أفضل الطريقه الأولى
(22-10-16, 05:24 AM)adel27 كتب : [ -> ]أبد ياغالي تحت أمرك وأن شاء الله تنحل مشكلتك 

أنا عملت لك مثال وهو عبـاره عن البحث بطريقتين أختر أي طريقه تناسبك 
الطريقه الأولى تعبة الكمبو بكس 
والثانيه بدون كمبو بكس أنا أفضل الطريقه الأولى

اولا اشكرك من كل قلبي 
ثانيا هذه الطريقة اعرفها من قبل اظن انني لم استطع ان اوصل الفكرة كما يجب هل هناك طريقة غير like للبحث 
بقواعد البيانات 
وشكرا  على ردك والسلام
وعليكم السلام ورحمة الله وبركاته

توجد طريقة ترجع بأي سطر يحتوي عمود محدد على أي كلمة من الكلمات الموجودة في TextBox1
وهذا هو الكود لعمل ذلك
كود :
Dim mLike As String = "([column1] LIKE '%" & Join(Me.TextBox1.Text.Trim.Split, "%') OR ([column1] LIKE '%") & "%')"
Dim sql As String = "SELECT * FROM [Tabel1] WHERE " + mLike

لو وضعنا في TextBox1.Text النص التالي "من في بي" فإن جملة SQL راح تكون
كود :
SELECT * FROM [Tabel1] WHERE ([column1] LIKE '%من%') OR ([column1] LIKE '%في%') OR ([column1] LIKE '%بي%')

جربها يمكن تطلع مطابقة لسؤالك
نفس طريقتي  يا  اخ  ممدوح  ،
كما انه يوجد طرق اخرى و لكن هذه اسهلها ايضا يوجد  طريقة  CONTAINS و  FreeText و تمرر مجموعه من الكلمات كمصفوفه  و لكنها صعبه قليلاً كمبتدأ في ادارة قواعد البيانات  يعني يبغى لها اضافات اثناء تثبيت SQL  Server  ،  و في الحقيقه  لم اجربها  و انما قرات عنها سابقا و احببت اضافتها  لعلك تجد ضالتك فيها  ،  و هذا رابط يشرح طريقتها في الاستخدام  :

http://sqlmag.com/sql-server/sample-full...rch-engine

ايضا شيء اخر لو  اردت ان تبحث  في جميع الاعمده النصيه الموجوده  في  قاعدة البيانات  بنفس طريقة  الاخ ممدوح فقط  قم بدمج  الاعمده و طبق عليها  عملية like  مثال  :  
WHERE ([column1]+[column2] LIKE '%من%') OR ([column1]+[column2] LIKE '%في%') OR ([column1]+[column2] LIKE '%بي%')
(22-10-16, 12:40 PM)ممدوح كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته

توجد طريقة ترجع بأي سطر يحتوي عمود محدد على أي كلمة من الكلمات الموجودة في TextBox1
وهذا هو الكود لعمل ذلك
كود :
Dim mLike As String = "([column1] LIKE '%" & Join(Me.TextBox1.Text.Trim.Split, "%') OR ([column1] LIKE '%") & "%')"
Dim sql As String = "SELECT * FROM [Tabel1] WHERE " + mLike

لو وضعنا في TextBox1.Text النص التالي "من في بي" فإن جملة SQL راح تكون
كود :
SELECT * FROM [Tabel1] WHERE ([column1] LIKE '%من%') OR ([column1] LIKE '%في%') OR ([column1] LIKE '%بي%')

جربها يمكن تطلع مطابقة لسؤالك

السلام عليكم 
الطريقة هذه  تزيد الصفوف ولا تنقصها  or هي او اي ستزيد الصفوف بذلك لان اي حقل 
فيه احد الكلمات سيظهر على كل اشكرك اتعبتك معي 
وجزاك الله خيرا

(22-10-16, 06:55 PM)myalsailamy كتب : [ -> ]نفس طريقتي  يا  اخ  ممدوح  ،
كما انه يوجد طرق اخرى و لكن هذه اسهلها ايضا يوجد  طريقة  CONTAINS و  FreeText و تمرر مجموعه من الكلمات كمصفوفه  و لكنها صعبه قليلاً كمبتدأ في ادارة قواعد البيانات  يعني يبغى لها اضافات اثناء تثبيت SQL  Server  ،  و في الحقيقه  لم اجربها  و انما قرات عنها سابقا و احببت اضافتها  لعلك تجد ضالتك فيها  ،  و هذا رابط يشرح طريقتها في الاستخدام  :

http://sqlmag.com/sql-server/sample-full...rch-engine

ايضا شيء اخر لو  اردت ان تبحث  في جميع الاعمده النصيه الموجوده  في  قاعدة البيانات  بنفس طريقة  الاخ ممدوح فقط  قم بدمج  الاعمده و طبق عليها  عملية like  مثال  :  
WHERE ([column1]+[column2] LIKE '%من%') OR ([column1]+[column2] LIKE '%في%') OR ([column1]+[column2] LIKE '%بي%')

اشكرك  على الرد  جزاك الله خيرا
اخي الفاضل تم اجابتك بمنطقيه بحيث من الممكن أن تعيد استخدام الاكواد كما تريد مثلا في هذه الحاله بدلا من OR استخدم And و معناه لابد ان العمود يحتوي جميع الكلمات الموجود في مفاتيح البحث
(22-10-16, 10:19 PM)myalsailamy كتب : [ -> ]اخي الفاضل تم اجابتك  بمنطقيه  بحيث من الممكن أن تعيد استخدام الاكواد كما تريد مثلا  في هذه الحاله بدلا من OR  استخدم And  و معناه  لابد ان العمود يحتوي جميع الكلمات الموجود في مفاتيح البحث

انا لست متذمرا  بل  شاكرا للتعاونكم اعلم انكم اجبتم بما علمتم وجزاكم الله خيرا والشكر موصول لكم ولهذا 
المنتدى الحميل