كيف أعمل خاصية البحث
#1
السلام عليكم

لدي قاعدة بيانات فيها عدة جداول من بينها جدول سميته bien و في الجدول هذا أود البحث بواسطة رقم bien و الذي سميته NumBien
لقد جربت البحث بواسطة الفلترة و اليكم الكود و نتجية خاطئة اي لا يعمل
كود :
IF sedit1.GetTextLen<> 0 then begin dm.ADOQuery1.Filter:='NumBien='''+sEdit1.Text+'*'''; dm.ADOQuery1.Filtered:=true; end else begin dm.ADOQuery1.Filtered:=false; end;
و لقد جربت البحث بطريقة ثانية أخرى و تظهر لي رسائل خطأ عديدة و اليكم الكود الثاني :
كود :
dm.ADOQuery1.Close ; dm.ADOQuery1.Parameters.ParamByName('c').value:=sEdit1.text; dm.ADOQuery1.Open; if dm.ADOQuery1.RecordCount=0 then showmessage('Ne Exist Pas') else showmessage ('Exist') ;
و في قسم الخصائص و بالضبط في SQL وضعت الامر التالي :
كود :
select*from Tbien where NumBien.code=:c
لم أفهم مصدر الخطأ ، و جزاكم الله خيرا لما تقدمونه خدمة للأعضاء .
الرد
#2
الحمد لله لقد وجدت الحل بعد جهد هههه و هذا لحل الصحيح : select*from Bien where Bien.NumBien=:c
بقي لي عائق : كيف اقوم البحث بخاصية الفلترة ؟ اي مثل الخاصية التي في الجوال مجرد اكتب الرقم الاول تظهر لي بقية الارقام التي تشابهه ؟
و جزاكم الله خيرا
الرد
#3
السلام عليكم و رحمة الله تعالى و بركاته
أخي في الحدث on change الخاص ب edit ضع كود الفلترة
dm.ADOQuery1.Filter:='NumBien='''+sEdit1.Text+'*''';
dm.ADOQuery1.Filtered:=true
بالتوفيق
الرد
#4
بارك الله فيك يا أستاذي الفاضل على التجاوب
و قد جربت الكود و للأسف لم يعمل :confused:
أتمنى ان نجد الحل و نفع الله بك اخاه ،،
الرد
#5
أخي تأكد من نوع الحقل هل هو نص أم رقم و إذا كان رقم يجب أن تستهدم الدالة strtoint مثل

dm.ADOQuery1.Filter:='NumBien='''+strtoint(sEdit1.Text)+'*'' ';
dm.ADOQuery1.Filtered:=true;

بالتوفيق
الرد
#6
makhlouf كتب :أخي تأكد من نوع الحقل هل هو نص أم رقم و إذا كان رقم يجب أن تستهدم الدالة strtoint مثل

dm.ADOQuery1.Filter:='NumBien='''+strtoint(sEdit1.Text)+'*'' ';
dm.ADOQuery1.Filtered:=true;

بالتوفيق

بارك الله فيك أخي ، جربت الكود و لم يقبل التنفيد و لكن بعد اجتهاد متواضع مني طبقت التنفيد التالي وقد نجح معي ولكن تبقي مشكل

السهم لا يأتي في مكون DBGrid يعني لا ينزل يبقى في الاول للتوضيح اكثر سأعطيك مثال

مثال عندي ارقام من 1 الى 10 لو اقوم بالبحث عن صاحب الرقم 66 تظهر رسالة انه غير مسجل

و عندما ابحث مثلا عن رقم 5 او 9 او 4 يقول لي مسجل و لكن السهم لا ينزل في DBGrid

علما أني ****ه ينزل ،، و حفظك ربي من كل شر لما تقدمه لي من عون


كود :
dm.ADOQuery1.Close ; dm.ADOQuery1.Parameters.ParamByName('c').value:=sEdit1.text; dm.ADOQuery1.Open; if dm.ADOQuery1.RecordCount=0 then showmessage('Ne Exist Pas') else showmessage ('Exist') ;
الرد
#7
أخي ألق نظرة هنا لعلك تجد مبتغاك
http://www.delphi4arab.net/forum/showthr...p?tid=3912
بالتوفيق
الرد
#8
أخي حاول تجريب هذا الكود
procedure tform1.edit1change(sender:tobject);
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from bien where numbien like '+qoutedstr('%'+edit1.text+'%');
adoquery1.open;
end;

بالتوفيق
الرد
#9
بارك الله فيك أخي العزيز و جزاك الله خيرا ، نجحت بفضل الله و بفضلك ثانيا ، و كان أيضا ناقصني داتا سورس اخر خاص بالبحث

جزاكم الله خير اخي و جد سعيد بلإستفادة من علمك :d

و اعتذر على أي ازعاج فأخوك مبتدأ و مقبل على التخرج و السلام عليكم ،،
الرد
#10
و عليكم السلامورحمة الله تعالى و بركاته
و فيك بارك الله يا أخي و عفوا و نحن في استعداد تام لتقديم العون إن إستطعنا و نحن هنا لنتعلم و لننفع و ننتفع، وفقك الله في دراستك و حياتك يا أخي.
بالتوفيق
الرد


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


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