delphi4arab منتديات دلفي للعرب
كيف أضع استعلاما بهذا الشكل ؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف أضع استعلاما بهذا الشكل ؟ (/showthread.php?tid=5278)



كيف أضع استعلاما بهذا الشكل ؟ - وليد - 01-06-2013

[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"]


كيف أضع استعلاما بهذا الشكل ؟ - h-farid - 29-07-2013

و عليكم السلام و رحمة الله.
لدي برنامج يعمل بنفس الفكرة, ما قمت به أنا هو فلترة مباشرة دون استعمال الاستعلام :
إقتباس : 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