delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف أضع استعلاما بهذا الشكل ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[FONT="Arial"]السلام عليكم
عندي جدول TABLENAME في قاعدة بيانات أكسس وأعمل بالدلفي 2010 وفي الجدول المذكور عدة حقول بعضها من نوع رقم وبعضها نص.
وأريــد أن أعمل واجهة على البرنامج للفلترة عن طريق الإستعلام بحيث أضع COMBOBOX لتحديد الحقل المراد الفلترة فيه وأضع كذلك EDIT لوضع القيمة المطلوبة .
لكن كما هو معلوم أنه في حال كان الحقل من نوع رقم يمكن أن تكتب الأمر بهذا الشكل:
PHP كود :
select * from tablename
where
( (tablename.FieldName)='+edit.text+'); 
لكن في النص تضيف الشلطتين "" كما هو مبين هنا:
PHP كود :
select * from tablename
where
( (tablename.FieldName)="'+edit.text+'"); 
المشكل هو إذا كانت لدي حقول كثيرة كيف أتخلص من طول الأوامر بمعنى أني أعطيت البرنامج أوامر أنه في حال كان النص الموجود في combobox هو من نوع رقم فاعمل الإستعلام الأول وفي حال كان الحقل المختار في ال combobox من نوع نص فاعمل الإستعلام الثاني فكيف أتخلص من طول وكثرة الأكواد .
[FONT="Arial"]
و عليكم السلام و رحمة الله.
لدي برنامج يعمل بنفس الفكرة, ما قمت به أنا هو فلترة مباشرة دون استعمال الاستعلام :
إقتباس : procedure tmain_form.t_artclsfilterrecord( dataset: Tdataset; var accept: Boolean );
begin
case combobox2.itemindex of
0:
Accept := pos( uppercase( edit5.text ), uppercase( dataset.fieldbyname( 'code' ).asstring ) ) = 1;
1:
Accept := pos( uppercase( edit5.text ), uppercase( dataset.fieldbyname( 'libelle' ).asstring ) ) = 1;
2:
Accept := pos( uppercase( edit5.text ), uppercase( dataset.fieldbyname( 'ref' ).asstring ) ) = 1;
3:
Accept := pos( uppercase( edit5.text ), uppercase( dataset.fieldbyname( 'type' ).asstring ) ) = 1;
end;
end;

طبعا هذا الكود تضعه في حدث OnfilterRecord للمكون TADOTable