![]() |
|
تصفية بيانات جدول باستخدام اجراء - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13) +--- الموضوع : تصفية بيانات جدول باستخدام اجراء (/showthread.php?tid=7125) |
تصفية بيانات جدول باستخدام اجراء - rahiche - 03-08-2015 السلام عليكم لم اجد العنوان المناسب للموضوع حيث سنشرح لكم اجراء بسيط جدا سيسهل عليكم عملية التصفية حيث عندما تريد التصفية في اي مكون combobox او edit او اي مكون قابل للكتابة string هذا هو الاجراء كود : procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');
if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;اسم الجراء هو filterr و قابل للتغير كما نريد و يحتوي على 3 باراماتر و هي Dataset من نوع TDataSet و هي حجمة البيانات او نعتبرها الجدول في الحالة العامة FieldName : و هو من نوع نصي و هو الحقل الذي سنبحث فيه SearchTerm : متغير من مون نصي و هو نص البحث او بالاحرى اداة البحث في البداية عمل شرط للتأكد من ان اداة البحث غير فارغة if SearchTerm = '' then حيث اذا كانت فارغة يتم الغاء الفلترة ثم نبدأ في الاستثناء else نقول له Dataset.Filter و هذا ما يكافئه adotable.filter في حال استخدمنا مكون ado كمثال اي Dataset هي الحالة العامة لاي جدول نص التصفية و هو عبارة عن نص من نوع string في حالة التصفية التي نكتب فيها دائما الكود كامل نكتب كمثال كود : adotable1.filter := 'name' + 'like' +QuotedStr(edit1.text + '*');و هنا في الحالة العامة واضح فقط جعلنا التخصيص تعميم ثم بعد كتابة نص التفية نفعلها Dataset.Filtered := True; الآن اذا اردت التجربة اذهب مثلا لمكون edit عادي و اكتب في حدث OnChange الكود التالي فقط كود : filterr(adotable1,'name',edit1.text)اما بالنسبة للمن اردا فهم Assert فهي عبارة عن دالة من براماترين منطقي و رسالة تقوم بالتأكد من الشرط الذي هو منطقي Boolen اي الباراماتر الاول و ثم اذا كان خاطئ يمر إلى الرسالة و يمكن التحكم في الدالة بحرية عبر شروط فقط و في هذا الكود الاخص بالتفية الشرط هو Assigned(Dataset) و الذي هو دالة اخرى ببرامتر وحيد للتأكد من القيم الخاصة بالداتا سات اي فارغة او لا و هناك من يسأل لمذا لم نستخدم الشرط العادي الجواب هو لانها تتعامل مع عدد محدد من الانواع مثلا الشرط يكون منطقي لكن Assigned يمكن ان يكون اما Pointer او TObject او Method و في النهاية اذا كانت Nul ترجع لنا قيمة false و اذا كانت ممتلئة ترجع لنا قيمة true اي نستخدمها في الباراماتر مباشرة و هذا الاخير كله من اجل التأكد من ان الداتا سات موجود ثم التوجه للشروط السابقة اتمنى وصول الفكرة RE: تصفية بيانات جدول باستخدام اجراء - gheislam - 08-12-2015 رائع ومفيد .... شكرا لك
|