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

البحث عن سجل تلو الآخر

بدأه وضاح الخير في 18 نوفمبر 2008 · 17 رد · 2,451 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

و لكم جزيل الشكر

#2

أخي الكريم

استخدام locate لا يأتي الا بأول سجل

فعند البحث بها تلقائيا يبدأ البحث من اول الجدول

فلابد لكي تحصل علي طلبك أستخدم جملة sql

هذا والله أعلم

خيركم من تعلم القرآن وعلمه

#3

أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev...

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#4

ضع مركبة Table وفي الخصائص ضع Filtred = True

وفي الحدث OnFilterRecord ضع :

Accept:=Table1['Nom']=Edit1.Text

هذا طبعا مثال فقط

وضع Button وفي OnClick أكتب : Table1.FindNext

#5

فى حالة التوسع فى المشروع سوف يتطرأ اليك موضوع "جمل SQL"

نصيحة لك قم باستعمالها هتنفعك كتير

Comming Soon

#6

السلام عليكم

مثال لتوضيح البحث بإستخدام الـ 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;

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

useing_Filter_and_SQL.rar

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#7

جزاكم الله خير ولكن لم يفي بما أريد أخي Rober جربت مثالك و لكن للأسف .

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

#8

ألا يوجد حل يا إخوان

#9

السلام عليكم ورحمة الله وبركاته

أخي العزيز يمكن استخدام هذا الكود

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

- طريق الألف ميل يبدأ بخطوة -

- ألعاب من تصميمي:

المنقذ

/index.ph...st&id=91370

الأربع تربح

/index.ph...st&id=91369

المتاهة

/index.ph...st&id=91374

#10

السلام عليكم...

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

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

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

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#11

بســم الله الـرحمــن الرحيــم

كما قال الاخ وائل

أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev

ومن ثم ضع زر خاص للتنقل بين السجلات التالي والسابق

#12

جزاكم الله ألف خير.

أخي Fadi-l جربت طريقتك و نجحت و لكن عندما يصل البحث الى آخر سجل و بدأنا بكتابة نص جديد للبحث عنه فإنه يقف في السجل الأخير و لا يتحرك. هل هناك طريقة للعودة الى البداية و يبحث في السجلات من البداية.

#13
Fadi-l كتب:
if Query1.Eof then
Query1.First;

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#14

الله يحفظك أخي Rober و يجزاك ألف خير على ردك و لكن عندما يصل الى السجل الأخير فنقوم بنقر مرة أخرى على الزر فيعود الى أول سجل في القاعدة و ليس الى أول سجل طابق عملية البحث.

أرجو أن تكون فهمت سؤالي

#15

أخ وضاح أعذرني على هذا الخطأ لكني نسينت و ضع التعديل كامل

بعد التعديل على طريقة الأخ فادي

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;

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#16

جزاكم الله ألف ألف خير.

فعلاً مشت معاي الى الآن حلاوة

#17

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

#18

أخي العزيز..

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

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

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

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

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

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

تنبيه:

* Table1،Table2 هما في هذا الشرح الأدوات التي تأتي مع حزمة BDE.

** جدول البيانات هو اسم الجدول الذي خزنت به بياناتك.

ولك التوفيق..

أخوك / نجم

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