الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بخصوص جملة SELECT في بحث متقدم

مغلق
بدأه moonno في 6 أبريل 2007 · 7 رد · 891 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم:

أنا لدي شاشة بVB.NET يوجد بها 8 حقول مختلفة (TEXTBOX ) حقل لأسم الشخص وآخر لرقم هاتفه وآخر لبريده الإلكتروني وأخر لإسم أب الشخص وآخر لإسم العائله وهكذا....

بحيث يقوم المستخدم بتعبئتها جميعها أو بعض منها على حسب ما يتذكر من هذه المعلومات ثم يقوم بضغط زر البحث فمثلا لو قام بإدخال اسم أحمد في حقل اسم الشخص واسم ناصر في حقل اسم الأب وبقية الحقول تركها فارغة بحكم انه لا يعلم بقية المعلومات المفروض أن تظهر في النتائج بيانات جميع من هم بإسم (أحمد ناصر) وعدم ظهور من هم بإسم أحمد أو من آباءهم باسم (ناصر|) فعندما قمت بكتابه جملة SQL قمت بوضع هذه القيم في WHERE وربطتها بAND ولكن عند تنفيذ البرنامج لا تظهر لي أي نتائج لانني لم أقوم بتعبئه جميع الحقول الثمانيه وهذا ليس ضروري في البرنامج الذي اقوم بتصميمه حاليا وعندما قمت بإستبدال AND ب OR ظهرت لي جميع من هم بإسم أحمد بصرف النظر عن أسماء أباءهم وجميع من أباءهم بأسم ناصر بصرف النظر عن اسماءهم وهذا خطأ لأنني الآن أقوم بتصميم بحث متقدم لبرنامجي.... سؤالي هو كيف أكتب جمله SELECT في حالتي هذه

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 6 أبريل 2007 في 17:16

#2

اخي من المنطق عند عمل or في الإستعلام الذي ذكرت ان يعطيك تلك النتيجة ...

في حالتك حاول ترجيب اللإستعلام عن طريق الكود ... مثلا لو كان الحقل الأول غير فارغ ضع الكلمة التي تشغير على البحث لهذا الحقل ثم بعد ذلك هل الحقل الثاني والثالث والرابع فارغ إذا البحث سيكون على الحقل الأول ...

الإحتمال الثاني ان يكون الحقل الأول غير فارغ والثاني كذلك والثالث فارغ ... وهكذا ...

وهكذا .. بعدين ركب كلمات البحث وجعلها استلام يمرر لقاعدة البيانات ...

#3

أشكرك يأخي فواز على مرورك أنا كنت مفكر بالطريقة التي ذكرتها مسبقا ولكن في حالتي هذه سأضع ما يقارب 75 جملة if لا أعلم لكن أتوقع ان هناك طريقة فعالة أكثر خصوصا أن هذا البرنامج هو مشروع تخرجي بإذن الله وبالطبع سأحاسب على فاعلية الأكواد التي أكتبها...

أرجوا المساعدة ... لأنني متوقف عن هذه النقطة...

#4

الحل هو بناء جملة الـSELECT وقت تشغيل البرنامج. اجعل البرنامج يتحقق من قيمة كل كونترول فإذا وجده غير فارغ أضاف الشرط الخاص به إلى جملة الإستعلام.

#5

ممكن توضح لي أكثر يأ SYSTEM DOWN وأشكرك على مرورك وجزاك الله خير

#6

يعني تكون جملة الإستعلام داخل متغير نصي من غير أي شروط

sqlString = "SELECT * FROM SOMETHING"

و تمر على الكونترولز واحد واحد و تشيك على محتواه. إذا كان غير فارغ أضفت على المتغير النصي شرك الإستعلام و هكذا. هذه الطريقة تدعى Dynamic SQL و كن حريصاً عند استخدامها لأنها قد تعرضك لخطر هجوم إختراق يدعى SQL Injection و لكن نأخذ الأشياء حبة حبة. إذا مشيت معاك الأمور ابحث في موضوع كيفية تعيين parameter في جمل الـSQL.

#7
اقتباس
لولا الـSystem Down ما كان المبرمجين يشدوا شعرهم....

و لولا الـSystem Down ما كان المبرمجين حياكلوا عيش...

حرام يا اخي قل بدلها لولا الله ورحمته...

#8

السلام عليكم

اخي الكريم جرب هاذا الكود البسيط ولايوجد داعي لوضع عبارات شرطية

و ان شاء الله تلاقي الحل

SQL = "select * from PERSON_TABLE where name like'*" & Text1.Text & "*" & "' AND add like'*" & Text2.Text & "*" & "' AND tel like'*" & Text3.Text & "*" & "'"

لاتنسونا من الدعاء

تم تعديل هذه المشاركة بواسطة mouaz في 10 أبريل 2007 في 08:46

هذا الموضوع مغلق.

مواضيع مشابهة