29-12-2009, 04:05 AM (آخر تعديل لهذه المشاركة: 29-12-2009, 12:48 PM بواسطة kachwahed.)
ماشاء الله عليكم اخواني
kachwahed & hanipino فعلا حل متميز
بارك الله فيكم
وفي انتظار المشروع الجديد
لكن اخي kachwahed هنالك مشكله اذا لم يكن هناك اي سجل بالdbgrid يظهر ان هناك سجل واحد ومن المفروض ان يظهر صفر.
سلام عليكم
من جديد اخي kachwahed هنالك مشكله وهي انه يظهر السجلات الظاهره للعيان فقط اي اذا كان حجم ال dbgrid صغير نسبيا ويسمح بعرض 15 سجل وكان عدد السجلات بال dbgrid تساوي 20 فانه يظهر ان عدد السجلات 15 اي هذه هي المرئيه وعند تكبير حجم ال dbgrid يزيد عدد العناصر علي حسب حجم القريد فقط
**** ان اكون وضحت المشكله
لا اله الا الله
عدد ما كان وعدد ما يكون وعدد الحركات والسكون
إقتباس :لكن المشكله ان الحل الموجود في الاعلي يعيد عدد السجلات الموجوده في الجدول باكمله وليس فقط التي تظهر في dbgrid في بعض الاحيان اقوم بعمل فلتره لمجموعه معينه واظهرها علي القريد
لم أفهم ما أردت فعله بالتحديد، إذ كل البيانات المخزنة في DataSet تظهر في TDBGrid المرتبطة به
أيضا الـ Filter يحدث على مستوى DataSet وبالتالي عدد السجلات RecordCount لـ DataSet يتغير حسب الـ Filter
عموما، جرب هذه أيضا:
RecCount تؤدي المطلوب أخي الكريم، علينا فقط الانتباه في الـ Filter...
بداية كان هناك خطأ في موضع الـ Filter لاحظ:
كود :
procedure TForm1.Edit2Change(Sender: TObject);
begin
[color=Red]ADOQuery1.SQL.Text:='select * from n1 where na like"'+Edit2.Text+'%"[/color];';
DBGrid1.DataSource:=DataSource2;
//taSource2.DataSet:=ADOTable1;
ADOQuery1.Open;
//Label28.Caption:='عدد النتائج المعروضة : '+IntToStr(MyDBGrid(DBGrid1).RowCount-1);
Label14.Caption:='عدد النتائج المعروضة : '+IntToStr([color=Red]ADOTable1.Recordset.RecordCount[/color]);
Label13.Caption:='عدد النتائج المعروضة : '+IntToStr(MyDBGrid(DBGrid1).RowCount-1);
end;
أي وضعت Filter في ADOQuery وحاولت عرض عدد السجلات من ADOTable ! طبعا ستكون النتيجة خاطئة.
أيضا هناك طريقتين لعمل Filter إما باستخدام خاصية Filter أو بإعادة الاستعلام، هذه الأخيرة مفضلة عند العمل على الشبكات، حيث قم يتم إضافة سجلات أثناء الـ Filter.
أعددت الطريقتين في المرفقات. بالتوفيق.