المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: البحث عن سجل تلو الآخر
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
وضاح الخير
إخواني انا استخدمت طريقة Locate في البحث عن السجلات و ماشية الحمد لله تمام بس هو يبحث عن سجل و احد فإذا كان لدينا اسم محمد في خمسة سجلات و اريد أن يبحث عن الاسم الآول ثم أضغط على زر البحث مرة أخرى فيذهب الى السجل الذي بعده و هكذا
و لكم جزيل الشكر
مقبل
أخي الكريم
استخدام locate لا يأتي الا بأول سجل
فعند البحث بها تلقائيا يبدأ البحث من اول الجدول

فلابد لكي تحصل علي طلبك أستخدم جملة sql
هذا والله أعلم
Wael Dalloul
أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev...
Sa Mu
ضع مركبة Table وفي الخصائص ضع Filtred = True
وفي الحدث OnFilterRecord ضع :
Accept:=Table1['Nom']=Edit1.Text
هذا طبعا مثال فقط
وضع Button وفي OnClick أكتب : Table1.FindNext
Swift
فى حالة التوسع فى المشروع سوف يتطرأ اليك موضوع "جمل SQL"
نصيحة لك قم باستعمالها هتنفعك كتير
rober
السلام عليكم
مثال لتوضيح البحث بإستخدام الـ filter و SQL
كود
procedure TForm1.Button1Click(Sender: TObject);
begin
   if edit1.Text <> '' then
   begin
     adotable1.Filtered := false;
     adotable1.Filter := 'name like ''%'+edit1.Text+'%''';
     adotable1.Filtered := true;
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   adoquery1.Active := false;
   adoquery1.SQL.Clear;
   adoquery1.SQL.Add('select * from tbl where name like ''%'+edit2.Text+'%''');
   adoquery1.Active := true;
end;


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

وضاح الخير
جزاكم الله خير ولكن لم يفي بما أريد أخي Rober جربت مثالك و لكن للأسف .
أنا أريد عند النقر على زر البحث ينتقل المؤشر الى السجل الأول ثم عند النقر مرة أخرى على زر البحث ينتقل الى السجل الثاني إذا كان هناك سجل طابق ما هو مكتوب في Edit1.text
وضاح الخير
ألا يوجد حل يا إخوان
Fadi-l
السلام عليكم ورحمة الله وبركاته
أخي العزيز يمكن استخدام هذا الكود
كود
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Next;
While(Query1['Name']<>Edit1.Text)AND(not Query1.Eof) do
Query1.Next;

if Query1.Eof then
Query1.First;
end;


علما بأني افضل استخدام طريقة الـ SQL كما قام بوضعها الأخ Rober
najy_zl
السلام عليكم...

الطريقة التي أفضلها هي استعمال نافذة بحث صغيرة (يمكن إبقاؤها دائماً في المقدمة) تحتوي على خانة أو أكثر لإدخال نصوص البحث و زر للبحث وADOQuery و DataGrid لعرض النتائج. مع استعمال جملة SQL لفتح الـ Query.

و عند اختيار أي سجل في نافذة البحث يتم الانتقال إلى السجل المقابل له في النافذة الرئيسية باستعمال Locate.

يمكن بدل استعمال نافذة خاصة للبحث أن تستعمل إطاراً للبحث ضمن النافذة نفسها إذا كانت مساحتها تسمح.

نرجو الاستفادة و السلام.
FOX_DELPHI
بســم الله الـرحمــن الرحيــم
كما قال الاخ وائل
أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev
ومن ثم ضع زر خاص للتنقل بين السجلات التالي والسابق
وضاح الخير
جزاكم الله ألف خير.
أخي Fadi-l جربت طريقتك و نجحت و لكن عندما يصل البحث الى آخر سجل و بدأنا بكتابة نص جديد للبحث عنه فإنه يقف في السجل الأخير و لا يتحرك. هل هناك طريقة للعودة الى البداية و يبحث في السجلات من البداية.
rober
إقتباس(Fadi-l @ Nov 22 2008, 11:41 AM) *
كود
if Query1.Eof then
Query1.First;
وضاح الخير
الله يحفظك أخي Rober و يجزاك ألف خير على ردك و لكن عندما يصل الى السجل الأخير فنقوم بنقر مرة أخرى على الزر فيعود الى أول سجل في القاعدة و ليس الى أول سجل طابق عملية البحث.
أرجو أن تكون فهمت سؤالي
rober
أخ وضاح أعذرني على هذا الخطأ لكني نسينت و ضع التعديل كامل
بعد التعديل على طريقة الأخ فادي

كود
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Next;
While(Query1['Name']<>Edit1.Text)AND(not Query1.Eof) do
Query1.Next;

if Query1.Eof then
begin
Query1.First;
Button1Click(Sender);
end;
end;


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

1- ضع جدول البيانات في Table1.<< للعرض..

2- ضع نفس جدول البيانات في Table2.<< للبحث..

3- طبق الفلترة على Table2 حسب النص المراد البحث عنه .

4- ثم إبحث عن السجل الأول في Table1 بدلالة السجل الأول Table2.

عن طريق Next في Table2 وأخذ رقم السجل والبحث عنه في Table1 عن طريق Locate.

لاحظ أن Table2 لعمليات البحث فقط ولا يستخدم لعرض النتائج..

تنبيه:

* Table1،Table2 هما في هذا الشرح الأدوات التي تأتي مع حزمة BDE.
** جدول البيانات هو اسم الجدول الذي خزنت به بياناتك.
ولك التوفيق..

أخوك / نجم
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.