كيف أضع استعلاما بهذا الشكل ؟
#1
[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"]
الرد
#2
و عليكم السلام و رحمة الله.
لدي برنامج يعمل بنفس الفكرة, ما قمت به أنا هو فلترة مباشرة دون استعمال الاستعلام :
إقتباس : 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
من قال حاد عن أصله أو قال مات فقد كذب
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم