وضاح الخير
Nov 18 2008, 09:42 AM
إخواني انا استخدمت طريقة Locate في البحث عن السجلات و ماشية الحمد لله تمام بس هو يبحث عن سجل و احد فإذا كان لدينا اسم محمد في خمسة سجلات و اريد أن يبحث عن الاسم الآول ثم أضغط على زر البحث مرة أخرى فيذهب الى السجل الذي بعده و هكذا
و لكم جزيل الشكر
مقبل
Nov 18 2008, 11:05 AM
أخي الكريم
استخدام locate لا يأتي الا بأول سجل
فعند البحث بها تلقائيا يبدأ البحث من اول الجدول
فلابد لكي تحصل علي طلبك أستخدم جملة sql
هذا والله أعلم
Wael Dalloul
Nov 18 2008, 05:55 PM
أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev...
Sa Mu
Nov 18 2008, 10:27 PM
ضع مركبة Table وفي الخصائص ضع Filtred = True
وفي الحدث OnFilterRecord ضع :
Accept:=Table1['Nom']=Edit1.Text
هذا طبعا مثال فقط
وضع Button وفي OnClick أكتب : Table1.FindNext
Swift
Nov 18 2008, 10:54 PM
فى حالة التوسع فى المشروع سوف يتطرأ اليك موضوع "جمل SQL"
نصيحة لك قم باستعمالها هتنفعك كتير
rober
Nov 19 2008, 04:01 AM
السلام عليكم
مثال لتوضيح البحث بإستخدام الـ 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;
كما قال الأخوة أستخدم البحث في المنتدى و ستجد الكثير من الأمثلة و الشروحات لما تبحث عنه
وضاح الخير
Nov 19 2008, 10:15 AM
جزاكم الله خير ولكن لم يفي بما أريد أخي Rober جربت مثالك و لكن للأسف .
أنا أريد عند النقر على زر البحث ينتقل المؤشر الى السجل الأول ثم عند النقر مرة أخرى على زر البحث ينتقل الى السجل الثاني إذا كان هناك سجل طابق ما هو مكتوب في Edit1.text
وضاح الخير
Nov 22 2008, 08:29 AM
ألا يوجد حل يا إخوان
Fadi-l
Nov 22 2008, 10:41 AM
السلام عليكم ورحمة الله وبركاته
أخي العزيز يمكن استخدام هذا الكود
كود
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
Nov 22 2008, 03:08 PM
السلام عليكم...
الطريقة التي أفضلها هي استعمال نافذة بحث صغيرة (يمكن إبقاؤها دائماً في المقدمة) تحتوي على خانة أو أكثر لإدخال نصوص البحث و زر للبحث وADOQuery و DataGrid لعرض النتائج. مع استعمال جملة SQL لفتح الـ Query.
و عند اختيار أي سجل في نافذة البحث يتم الانتقال إلى السجل المقابل له في النافذة الرئيسية باستعمال Locate.
يمكن بدل استعمال نافذة خاصة للبحث أن تستعمل إطاراً للبحث ضمن النافذة نفسها إذا كانت مساحتها تسمح.
نرجو الاستفادة و السلام.
FOX_DELPHI
Nov 23 2008, 03:58 PM
بســم الله الـرحمــن الرحيــم
كما قال الاخ وائل
أستخدم Filter ابحث عنها في المنتدى, و من ثم يمكن التنقل بين السجلات باستخدام next, prev
ومن ثم ضع زر خاص للتنقل بين السجلات التالي والسابق
وضاح الخير
Nov 24 2008, 08:45 AM
جزاكم الله ألف خير.
أخي Fadi-l جربت طريقتك و نجحت و لكن عندما يصل البحث الى آخر سجل و بدأنا بكتابة نص جديد للبحث عنه فإنه يقف في السجل الأخير و لا يتحرك. هل هناك طريقة للعودة الى البداية و يبحث في السجلات من البداية.
rober
Nov 24 2008, 09:15 AM
إقتباس(Fadi-l @ Nov 22 2008, 11:41 AM)

كود
if Query1.Eof then
Query1.First;
وضاح الخير
Nov 24 2008, 12:23 PM
الله يحفظك أخي Rober و يجزاك ألف خير على ردك و لكن عندما يصل الى السجل الأخير فنقوم بنقر مرة أخرى على الزر فيعود الى أول سجل في القاعدة و ليس الى أول سجل طابق عملية البحث.
أرجو أن تكون فهمت سؤالي
rober
Nov 24 2008, 12:59 PM
أخ وضاح أعذرني على هذا الخطأ لكني نسينت و ضع التعديل كامل
بعد التعديل على طريقة الأخ فادي
كود
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;
وضاح الخير
Nov 25 2008, 12:58 PM
جزاكم الله ألف ألف خير.
فعلاً مشت معاي الى الآن حلاوة
وضاح الخير
Nov 26 2008, 10:48 AM
آسف إخواني ثقلتها عليكم ... بس عندما لا يتطابق عملية البحث مع ما هو موجود في Edit يعلق البرنامج أي تكون العملية الى ما لا نهاية فكيف اذا لم يجد ما يبحث عنه تظهر رسالة تخبره بذلك و ينهي عملية البحث
أخي العزيز..
1- ضع جدول البيانات في Table1.<< للعرض..
2- ضع نفس جدول البيانات في Table2.<< للبحث..
3- طبق الفلترة على Table2 حسب النص المراد البحث عنه .
4- ثم إبحث عن السجل الأول في Table1 بدلالة السجل الأول Table2.
عن طريق Next في Table2 وأخذ رقم السجل والبحث عنه في Table1 عن طريق Locate.
لاحظ أن Table2 لعمليات البحث فقط ولا يستخدم لعرض النتائج..
تنبيه:
* Table1،Table2 هما في هذا الشرح الأدوات التي تأتي مع حزمة BDE.
** جدول البيانات هو اسم الجدول الذي خزنت به بياناتك.
ولك التوفيق..
أخوك / نجم
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء
إضغط هنا.