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

طريقة عمل فلترة لجدول بأكثر من حقل

بدأه tahasit في 3 يناير 2010 · 7 رد · 4,802 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

إخواني أعضاء الفريق العربي للبرمجة أرجو أن تكونو جميعا في تمام الصحة والعافية

وأعتذر عن هذا الغياب فوالله أنا لا أطيق فرقتكم ولكن لي ظروف خاصة ستمر قريبا إن شاء الله.

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

procedure....

var

chan:String;

Begin

chan:='';ABSTable1.Filtered:=False;

chan:='Code_FORT='+''''+Edit2.Text+''''+' and '+'Datee>='+''''+Edit3.Text+''''+' and '+'Datee<='+''''+Edit4.Text+'''' ;

ABSTable1.Filter:=chan;

ABSTable1.Filtered:=true;

end;

كما تلاحظون من خلال الكود أنه يمكنني عمل إستعلام على الجدول بعدد غير محدد من الحقول مثلا هنا إستعملت :

1- إسم المورد

2- تاريخ دخول السلع إلى المخزن

من أجل إظهار المورد المحدد وبالمدة المحصورة بين التاريخين المدخلين .

وهذه الطريقة مفيدة جدا خصوصا في برامج تسيير مخزون .

ملاحظة :

Code_FORT: هو حقل كود المورد

Datee: هو حقل تاريخ دخول السلع إلى المخزن

ومن أجل ذلك وضعت على الفورم الخاص بالإستعلام ثلاث عناصر من Edit

الأولى نضع فيها كود المورد والثانية التاريخ الأول والثالثة التاريخ الثاني والصورة توضح أكثر :

post-145519-12625188982716_thumb.jpg

تم تعديل هذه المشاركة بواسطة tahasit في 3 يناير 2010 في 14:49

986902102.jpg
#2

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

من أجل توضيح الموضوع الأول هذا مثال بسيط ومبدأعمله كالآتي :

post-145519-1262705648568_thumb.png

تجدون المثال في المرفقات

وكل من له سؤال أنا في الخدمة .

TAHASIT arabteam2000.rar

986902102.jpg
#3

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

الأخ الفاضل

الطريقة الأفضل من طريقة الفلتر هي بناء استعلام يتضمن الحقول المختارة وتقاطع السلاسل النصية معها لأن طريقتك طريقة الفلترة تقوم على مبدأ تحميل كامل الجدول في الذاكرة ومن ثم إجراء الفلتر عليه

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

لذلك بغض النظر عن عدد الجداول التي تمتلكها ونوعية قاعدة البيانات التي تتعامل معها جرب استخدام الاستعلامات لسببين

1 - أكثر مرونة من طريقة الفلتر

2- أقل استخدام للذاكرة وموارد الشبكة

تحياتي

حكمت سراج الدين

#4

السلام عليكم

+1

#5

أنا مع كلام الأخ حكمت و الأخ زكيري

بكل الأحوال الكود التالي يقوم بعمل ما تريد على الوضع الحالي

procedure TForm1.BitBtn7Click(Sender: TObject);
var
  chan:String;
Begin
  chan:='';
  Table1.Filtered:=False;
  chan := 'cod=' + ''''+edit1.Text+'''' + ' and ' + 'prix>=' + ''''+edit2.Text+'''' + ' and ' + 'prix <=' + ''''+edit3.Text+'''' ;
  Table1.Filter:= chan ;
  Table1.Filtered:=true;
end;

لاحظ الصورة التي تشير للنتيجة

post-143282-12634179347648_thumb.jpg

أرجو الإستفادة

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

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

#6
rober كتب:

أنا مع كلام الأخ حكمت و الأخ زكيري

أرجو الإستفادة

بارك الله فيك أخي rober

وأنا أيضا معكم ولكن هذه الطريقة الوحيدة التي أعرفها و أعمل بها وأرتئيت أن أشارك بها إخواني

ياريت الأخ حكمت سراج الدين أو أحد الإخوة يثري الموضوع بذكر الطريقة الثانية

ليستفيد الجميع

بارك الله فيكم جميعا مرة أخرى

تم تعديل هذه المشاركة بواسطة tahasit في 14 يناير 2010 في 19:16

986902102.jpg
#7
procedure TForm1.BitBtn7Click(Sender: TObject);
Begin
  query1.Active := false ;
  query1.SQL.Clear ;
  query1.SQL.Add('select * from arabteam2000') ;
  query1.SQL.Add('where cod = :co');
  query1.SQL.Add('and prix >= :pr1') ;
  query1.SQL.Add('and prix <= :pr2') ;
  query1.ParamByName('co').AsString := edit1.Text ;
  query1.ParamByName('pr1').AsInteger := strtoint(edit2.Text) ;
  query1.ParamByName('pr2').AsInteger := strtoint(edit3.Text) ;
  query1.Open ;
end;

الصورة تعرض النتيجة بإستخدام الكود

post-143282-12634890469403_thumb.jpg

و المرفق يحتوي على المشروع كامل

أرجو الإستفادة

TAHASIT arabteam2000.rar

تم تعديل هذه المشاركة بواسطة rober في 14 يناير 2010 في 20:13

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

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

#8

بارك الله فيك أخي rober ''كفيت ووفيت''

جزاك الله عنا خير جزاء

1
986902102.jpg

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