![]() |
|
سؤال حول البحث المتقدم - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : سؤال حول البحث المتقدم (/showthread.php?tid=29220) الصفحات:
1
2
|
سؤال حول البحث المتقدم - ahmadpal - 01-04-19 بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخوتي / اخواتي الاعزاء اشكركم على ما تبذلونه من مجهود لمساعدة الاخرين في هذا المنتدى
لدي سؤال حول البحث في حال لو اردت ان يتم تجاهل الفاصلة "," من البحث في حال البحث المتعدد في الكود التالي استخدم تكست بوكس عدد واحد
كود : Dim s As String = TextBox1.Textانا استخدم هذا الكود ولكن اريد ان استخدم اكثر من تكست بوكس بحيث يمكنني ان اجعل الاسم في تكست لوحدها والجنس في تكست لوحدها ...الخ
وشكرا لكم وبارك الله فيكم
RE: سؤال حول البحث المتقدم - بدري - 01-04-19 الكود لن يعمل معك لان فيه اخطاء اولها لم تحدد طول الsubstring بحيث يكون مثل If s.Substring(s.Length - 1,1) = "," Then ثانيها انت وضعت try بدون ما تضع كود اظهار رساله الخطا في catch ثالثها انت تستخدم اسماء اعمده فيها مسافه RE: سؤال حول البحث المتقدم - ahmadpal - 01-04-19 (01-04-19, 08:09 PM)بدري كتب : الكود لن يعمل معك لان فيه اخطاء اخي العزيز الكود يعمل ولا توجد به اي مشاكل بخصوص Length - 1 فهي تعني اخر حرف في النص بغض النظر عن طوله وشكرا على المداخلة RE: سؤال حول البحث المتقدم - بدري - 01-04-19 لقد استفدت بمعلومه منك فجزاك الله خير وشكرا على الافاده RE: سؤال حول البحث المتقدم - elgokr - 01-04-19 وعليكم السلام ورحمة الله وبركاته
قم باستخدام الكود بهذا الشكل كود : Tryتذكر انا قمت بوضع كود تحقق اذا تم ايجاد نتائج البحث
يقوم بانهاء اجراء For كونه حصل على نتائج دون الحاجة لاستككمال اعادة البحث على باقي القيم
فمثلاً لديك عدد 3 قيم تقوم بالبحث بها
ووجد نتيجة من اول قيم سيتجاهل القيمة 2 و 3 من البحث
لان بدون هذا الامر
ستجد اذا وجد نتائج من القيمة الاول وراح وجد فى القيمة الثالثة
ستجد انه يعرض فقط القيمة الثالثة لذلك لتقليل الحمل والوقت عند وجود اول نتائج يعرضها مباشراً
تحياتى لك
وتمنياتى لك التوفيق
RE: سؤال حول البحث المتقدم - ahmadpal - 01-04-19 (01-04-19, 09:17 PM)elgokr كتب :اخي الكريم اشكرك جزيل الشكر على الرد ولكن يبدو انني لم اوضح السؤال جيداً اريد ان استخدم مجموعه من التكست بوكس الاول الاسم.text الثاني الرقم_الوطني.text الثالث الجنس.text الرابع عنوان السكن.text الخامس مكان الميلاد.text السادس رقم الهاتف.text وهذه التكست بوكس تقبل البحث عن اكثر من قيمة في نفس الوقت بمعنى بعد اضافة الفاصله في اي تكست سيجلب كل القيم فمثلا رقم الهاتف لو كتبت 55666666,55544455,666699988,4447788899 ونطابقت هذه الارقام مع ارقام موجودة في قاعدة البيانات يجب ان تظهر جميعها في الداتا جريد فيو وفي حال اضفت عنوان يتم تصفية النتائج بناءً على العنوان لارقام الهواتف وكذلك باقي الخانات ويبدو انني سوف استخدم and بدلا من or ليكون البحث شامل لجميع الخانات وهذا هو الكود بعد اضافة تعديل بسيط حيث انه يعمل بشكل جيد ولكن لتكست بوكس واحد انا اريد اللوب ان يشمل جميع التكست بوكس كود : im s As String = TextBox1.TextRE: سؤال حول البحث المتقدم - بدري - 01-04-19 ظننت من ردك لي ان المشكله انتهت عموما ربما هذا ما تريد sql="select * from Employees where true " if الاسم.text.trim<>"" then sql &= " and الاسم like '" & الاسم.text.trim & "'" if الرقم_الوطني.text.trim<>"" then sql &= " and الرقم_الوطني like '" & الرقم_الوطني.text.trim & "'" if الجنس.text.trim<>"" then sql &= " and الجنس like '" & الجنس.text.trim & "' " if عنوان السكن.text.trim<>"" then sql &= " and عنوان_السكن like '" & عنوان السكن.text.trim & "'" if مكان الميلاد.text.trim<>"" then sql &= " and مكان_الميلاد like '" & مكان الميلاد.text.trim & "'" if رقم الهاتف.text.trim<>"" then sql &= " and رقم_الهاتف like '" & رقم الهاتف.text.trim & "'" searchDA = New OleDbDataAdapter(sql, con) فهو يبحث بحسب مربعات النص المدخل بها بيانات مثلا لو ادخلت الاسم فقط سيبحث بالاسم فقط ولو اضفت معه رقم هاتف سيبحث بالاسم ورقم الهاتف فقطوهكذا واعتذر اليك RE: سؤال حول البحث المتقدم - ahmadpal - 01-04-19 (01-04-19, 10:59 PM)بدري كتب : ظننت من ردك لي ان المشكله انتهت اشكرك اخي الكريم وهذا لطف منك ان تجيب عن اسالتي لكن بالاضافة الى ما قدمته لي اريد ايضا ان تكون الفاصلة (,) عبارة عن بحث جديد اي بعدما يتم اضافة الفاصلة في textbox يتم تجاهل هذه الفاصلة والبحث ايضا بالكلمات التي تلي الفاصلة واعتبار انك تقوم بادخال قيمة جديدة وناتج البحث يشمل جميع الكلمات بين الفواصل فمثلا ابحث عن احمد ومحمد وخالد ومحمود اكتب في خانة البحث بحسب الاسم احمد,محمد,خالد,محمود ويجب ان تظهرلي جميع هذه الاسماء وفي حال لو اضفت في خانة العنوان اي عنوان ايضاً بنفس الفكرة مع قبول التعدد في العنوان مثلا العراق,مصر,السعودية يجب ان يحتوي البحث على كل هذه الكلمات وباقي الtextbox بنفس الطريقة علما ان جميع الخانات ستحتوي على بيانات وفواصل اثناء عملية البحث وتقبل مني شكر وتقديري RE: سؤال حول البحث المتقدم - بدري - 01-04-19 احذر اخي من استخدام try بدون ما تضع رساله خطا في catch الخاص بها فهذه ستسبب لك مشكله في عدم ظهور اخطاء في الكود وتظن انك ماشي صح والواقع يكون العكس بالنسبه للبحث في جميع الاسماء احمد,محمد,خالد,محمود فهذه تحتاج محترف sql هل من الممكن تضع مشروع فيه بيانات لاجرب عليها حتى اصل للحل؟ RE: سؤال حول البحث المتقدم - elgokr - 02-04-19 بكل تاكيد لم يعرض لك اى نتائج الا قيمة واحدة فقط
والسبب يرجع بان كلما تم تعبئة الـ DT وارسال القيم التى بها الى DataGridView
يتم اعادة تعبئتها من جديد ومن ثم اعادة ارسالها الى DataGridView
وبهذه الطريقة سيعرض فقط اجر نتائج البحث فقط من تعدد البحث
ولكي لا اقوم بكتابة كود كبير هنا
ولعدم شرح كيفية تصحيح طريقة الكود الذى لديك
احببت ان اعمل سورس كود مرفق + برنامج للاختبار
لطريقة التعامل مع تعدد البحث من خلال الفاصلة بين كل جملة واخري
وكيفية التعامل مع اى عمود بالجدول فى طريقة البحث
وايضاً حتى لا يذهب مجهود الاخر الفاضل بدري
احببت ان اشارك الكود بمشاركته بعد التعديل عليه ليناسب طريق الاستعلام
حتى تعم الفائدة وكذلك يمكن الاستفادة منه الاخرين
السورس المرفق اصدار 2015
صورة لشكل البرنامج
صورة لطريقة البحث الفردي
صورة لطريقة البحث المتعدد
تحياتى لك
وتمنياتى لك التوفيق
|