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

سؤال حول البحث في ال DataBase

مغلق
بدأه fadi2003 في 1 أغسطس 2003 · 7 رد · 1,393 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي سؤالين حول عملية البحث في الـ DataBase أرجو المساعدة في إيجاد حل لهما

1- أريد بمجرد كتبت أول حرف من الكلمة التي أريد البحث عنها أن يظهر كل الجمل التي تبدأ بهذا الحرف وكلما كتبت حرف ثاني قلة عدد الكلمات التي تظهر في القائمة إلى أن أصل إلى الكلمة المطلوبة بمعنى آخر كما يحدث في الديلفي عند الضغط على الـ Ctrl + Space

2- أريد البحث بشكل غير مطابق عن كلمة ما مثل ( لغة البرمجة ديلفي ) أريد أن أبحث عن الحرفين ( ة د)

فيحضرها لي مباشرة الحرفين السابقين هي نهاية كلمة البرمجة وبداية كلمة ديلفي .

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

#2

[ALIGN=RIGHT]بالنسبة للنقطة 1: يمكنك إستعمال locateمثال: نفترض أن لديك Table1

var options:TLocateOptions;

begin

options:=[LoPartialKey,LoCaseInsensitive]

table1.locate(A,B,options)



end;

]

حيث A هو العمود من Table1 الذي يتم البحث فيه

و B هي القيمة المبحوث عنها مثل Edit1.text

LopartialKey هو الخيار الذي يسمح لك تحصيل النقطة 1

كلما أضفت داخله حرف تحرك للبحث

في النقطة 2 إستعمل الفلتر أحسن Table1.filter

طالع التعليمات في دلفي أبحث عن filter ستجد أمثلة , و سأزودك بمثلها إن شاء الله

داخل مسير حدث Edit1.change ضع:

#3

شكرا لك أخي عازم

ولكن بالنسبة للنقطة الأولى ألا يمكن جعل السجلات تظهر في قائمة مختصرة كما في الديلفي تماما عندما نضعط على Ctrl+Space

و بالنسبة للنقطة الثانية لم أصل إلى شئ في الـ help فهل يمكن وضع مثال يشرح ذلك

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

#4

اخي العزيز اذا اردت طريقة اخرى بالإضافة الى طريقة الأخ عازم مشكوراً .

اليك:-

اولا نفترض انك سوف تتعامل مع جدول دلفي الجاهز CUSTOMER.DB

- من تبويبة BDE اسحب مكون SQL على الفورم

-من تبويبة DATA ACCESS اسحب مكون DATA SOURSE

- من تبويبة DATA CONTROL اسحب مكون DBGRID واجعل حجمه مناسبا على الفورم

- من تبويبة STANDARD اسحب مكون EDIT على الفورم

الخصائص :-

1- للمكون DBGRID1 :-

حدد الخاصية DATA SOURCE الى DATA SOURCE1

2- للمكونDATA SOURCE1 :-

حدد الخاصية DATA SET الى QUERY1

3- للمكون SQL1 :-

- حدد خاصية DATABASE NAME الى DBDEMOSE على افتراض ان جدول البيانات موجود فيها .

- من خاصية SQL يفتح لك محرر SQL اكتب فيه عبارة SQL هذه

select * from customer.db على افتراض ان customer هو جدولنا (خيار هذه الخاصية اختياري حتى فقط نري الجدول قبل التنفيذ ).

- حدد خاصية ACTIVE الى TRUE الأن سوف تظهر لك محتويات الجدول على ال DBGRID .

4- للمكون EDIT1 :-

حدد حدث التغيير Edit1Change وانسخ هذه الشفرة والصقها .

Query1.Close;

Query1.SQL.Clear ;

Query1.SQL.Add('select * from "customer.db"' );

Query1.SQL.Add('where company like '''+edit1.Text+'%''');

Query1.Open ;

عندما تنفذ البرنامج اكتب اول حرف على الedit إن شاء الله سوف يظهر لك الباقي

اما بالنسبة للجزء الثاني اذا استطعت ان اتوصل الى معرفته ساواليك به إن شاء الله.

ارجو ان يكون هناك ردود اخري من الأخوة حتى تعم الفائدة

ملاحظة :-

- انتبه الى حالة الأحرف الإنجليذية كبيرة ام صغير ة .

- حروف الشفرة غير مرتبة اذا اردت قرائتها من صفحة المنتدى فانصحك بنسخها ولصقها على محرر نصوص عادي وستجد انها ترتبت تلقائياً . (f)

dbsearch.zip

#5

شكرا لك أخي Mr_Delphi

ولكن ما أريده هو التالي :

بالنسبة للنقطة الأولى في سؤالي أريد أن جعل السجلات تظهر في قائمة مختصرة كما في الديلفي تماما عندما نضعط على Ctrl+Space ( مربع صغير يحتوي على الأسماء وكل ما كتبت حرفي قلة عدد الأسماء الموجودة في هذا المربع إلى أن أصل إلى الاسم المراد .

وبالنسبة لسؤالي الثاني :

أريد أن أبحث عن أي حرفين من الاسم فيحضر لي الاسم كاملا علما بأن الحرفين قد يكونا في أول الاسم أو في منصف الاسم أو في نهايته

#6

السلام عليكم

بالنسبة للنقطة الأولى : الطريقة التي اتبعتها هي نقل كل بيانات الحقل المراد البحث به الى ComboBox1 ثم فعلت خاصية autocomplate فأصبح مجرد ما أكتب بداية الاسم تظهر لي كل الاسماء التي تبدأ بنفس الحروف التي بدأت بها .

بالنسبة للنقطة الثانية زيد علامة (%) في نهاية السطر ليصبح الكود كالتالي

Query1.SQL.Add('where company LIKE ' + '"%'+Edit1.Text+'%"');
#7

شكرا لكم جزيلا (f)(f)(f)

#8

(f)(f)

شكرا جزيلاً ..أخواني ..ممتاز جداً الحلول ....ولكن عندما جريت طريقة الأخ سيد الدلفي ...للعبارات من نوع String..وجدت سهولة وتوافقية جيدة

ولكن عندما استخدمت الأرقام أي البحث ضمن جداول رقمية لم تفلح الأمور معي وبدء يعطيني Error.....وصورة الerror..مرفقة مع الموضوع ..أرجو

من الأخوة المساعدة ...

..وكيف لي ..صنع جدول بالباردوكس ....من نوع رقم ....لا يسمح بتكرار الرقم في الجدول مرتين ................

مشكورين

error_sql.zip

هذا الموضوع مغلق.

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