إخواني انا استخدمت طريقة Locate في البحث عن السجلات و ماشية الحمد لله تمام بس هو يبحث عن سجل و احد فإذا كان لدينا اسم محمد في خمسة سجلات و اريد أن يبحث عن الاسم الآول ثم أضغط على زر البحث مرة أخرى فيذهب الى السجل الذي بعده و هكذا
و لكم جزيل الشكر
إخواني انا استخدمت طريقة Locate في البحث عن السجلات و ماشية الحمد لله تمام بس هو يبحث عن سجل و احد فإذا كان لدينا اسم محمد في خمسة سجلات و اريد أن يبحث عن الاسم الآول ثم أضغط على زر البحث مرة أخرى فيذهب الى السجل الذي بعده و هكذا
و لكم جزيل الشكر
أخي الكريم
استخدام locate لا يأتي الا بأول سجل
فعند البحث بها تلقائيا يبدأ البحث من اول الجدول
فلابد لكي تحصل علي طلبك أستخدم جملة sql
هذا والله أعلم
خيركم من تعلم القرآن وعلمه
أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev...
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
ضع مركبة Table وفي الخصائص ضع Filtred = True
وفي الحدث OnFilterRecord ضع :
Accept:=Table1['Nom']=Edit1.Text
هذا طبعا مثال فقط
وضع Button وفي OnClick أكتب : Table1.FindNext
فى حالة التوسع فى المشروع سوف يتطرأ اليك موضوع "جمل SQL"
نصيحة لك قم باستعمالها هتنفعك كتير
Comming Soon
السلام عليكم
مثال لتوضيح البحث بإستخدام الـ 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;كما قال الأخوة أستخدم البحث في المنتدى و ستجد الكثير من الأمثلة و الشروحات لما تبحث عنه
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
جزاكم الله خير ولكن لم يفي بما أريد أخي Rober جربت مثالك و لكن للأسف .
أنا أريد عند النقر على زر البحث ينتقل المؤشر الى السجل الأول ثم عند النقر مرة أخرى على زر البحث ينتقل الى السجل الثاني إذا كان هناك سجل طابق ما هو مكتوب في Edit1.text
ألا يوجد حل يا إخوان
السلام عليكم ورحمة الله وبركاته
أخي العزيز يمكن استخدام هذا الكود
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
- طريق الألف ميل يبدأ بخطوة -
- ألعاب من تصميمي:
المنقذ
الأربع تربح
المتاهة
السلام عليكم...
الطريقة التي أفضلها هي استعمال نافذة بحث صغيرة (يمكن إبقاؤها دائماً في المقدمة) تحتوي على خانة أو أكثر لإدخال نصوص البحث و زر للبحث وADOQuery و DataGrid لعرض النتائج. مع استعمال جملة SQL لفتح الـ Query.
و عند اختيار أي سجل في نافذة البحث يتم الانتقال إلى السجل المقابل له في النافذة الرئيسية باستعمال Locate.
يمكن بدل استعمال نافذة خاصة للبحث أن تستعمل إطاراً للبحث ضمن النافذة نفسها إذا كانت مساحتها تسمح.
نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
بســم الله الـرحمــن الرحيــم
كما قال الاخ وائل
أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev
ومن ثم ضع زر خاص للتنقل بين السجلات التالي والسابق
جزاكم الله ألف خير.
أخي Fadi-l جربت طريقتك و نجحت و لكن عندما يصل البحث الى آخر سجل و بدأنا بكتابة نص جديد للبحث عنه فإنه يقف في السجل الأخير و لا يتحرك. هل هناك طريقة للعودة الى البداية و يبحث في السجلات من البداية.
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
الله يحفظك أخي 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;
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
جزاكم الله ألف ألف خير.
فعلاً مشت معاي الى الآن حلاوة
آسف إخواني ثقلتها عليكم ... بس عندما لا يتطابق عملية البحث مع ما هو موجود في Edit يعلق البرنامج أي تكون العملية الى ما لا نهاية فكيف اذا لم يجد ما يبحث عنه تظهر رسالة تخبره بذلك و ينهي عملية البحث
أخي العزيز..
1- ضع جدول البيانات في Table1.<< للعرض..
2- ضع نفس جدول البيانات في Table2.<< للبحث..
3- طبق الفلترة على Table2 حسب النص المراد البحث عنه .
4- ثم إبحث عن السجل الأول في Table1 بدلالة السجل الأول Table2.
عن طريق Next في Table2 وأخذ رقم السجل والبحث عنه في Table1 عن طريق Locate.
لاحظ أن Table2 لعمليات البحث فقط ولا يستخدم لعرض النتائج..
تنبيه:
* Table1،Table2 هما في هذا الشرح الأدوات التي تأتي مع حزمة BDE.
** جدول البيانات هو اسم الجدول الذي خزنت به بياناتك.
ولك التوفيق..
أخوك / نجم