25-02-2020, 11:28 AM (آخر تعديل لهذه المشاركة: 01-03-2020, 08:39 PM بواسطة S.FATEH.)
السلام عليكم اعضاء و مشرفي المنتدى الاعزاء
لدي سؤال و هو كيف يتم تصفية جدول حسب ما تم تحديده من dbgrid اي يقوم المستخدم بتحديد عدة سجلات من dbgrid ومن ثم عند الضغط على الزر يتم اخفاء جميع السجلات و ابقاء السجلات التي تم تحديدها فقط طبعا خاصية MultiSelect =true الموجودة في option
وشكرا
(25-02-2020, 11:28 AM)احمد العراقي كتب : [size=small]السلام عليكم اعضاء و مشرفي المنتدى الاعزاء[/size] [size=small]لدي سؤال و هو كيف يتم تصفية جدول حسب ما تم تحديده من dbgrid اي يقوم المستخدم بتحديد عدة سجلات من dbgrid ومن ثم عند الضغط على الزر يتم اخفاء جميع السجلات و ابقاء السجلات التي تم تحديدها فقط طبعا خاصية MultiSelect =true الموجودة في option[/size] [size=small]وشكرا[/size]
وعليكم السلام ورحمة الله وبركاته ،
هذه العملية تسمى الفلترة ، هناك العديد من المواضيع حول الفلترة فقط قم بالبحث في المنتدى .
يمكنك أيضا استعمال تعليمات ال SQL.
بالمناسبة لم تذكر نوع قاعدة البيانات التي تستعملها.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك. تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
(25-02-2020, 05:20 PM)أبو معاذ كتب : وعليكم السلام ورحمة الله وبركاته ،
هذه العملية تسمى الفلترة ، هناك العديد من المواضيع حول الفلترة فقط قم بالبحث في المنتدى .
يمكنك أيضا استعمال تعليمات ال SQL.
بالمناسبة لم تذكر نوع قاعدة البيانات التي تستعملها.
شكرا اخي العزيز على الرد
نعم اعلم بانها فلترة ولكن مشكلتي هي ليس الفلترة حسب حقل معين في الجدول وانما يقوم المستخدم بتحديد مجموعة سجلات يختارها بشكل عشوائي ومن ثم تتم الفلترة حسب ما تم اختياره من السجلات
اما قاعدة البيانات فهي Absolute
وعليكم السلام و رحمة الله
شكرا اخي على الرد ولكن الموضوع الذي اقترحته لي يعطي طريقة للنسخ و الحذف فقط وليس التصفية اذا ممكن كود التصفية من فضلك واكون لك شاكرا
26-02-2020, 10:17 AM (آخر تعديل لهذه المشاركة: 26-02-2020, 02:17 PM بواسطة لؤي.)
السلام عليكم
محاولة تحتاج إلى تعديل :
كود :
str:='';
search:='';
for i := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
str := 'Field_Name' + ' LIKE '+ QuotedStr(DBGrid1.SelectedRows[i];+'%') ;
if i=0 then
search:= str else
search:= str +' OR '+ search;
End;
DataModule.Table.Filtered := False;
DataModule.Table.Filter := search;
DataModule.Table.Filtered := True
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
كل من 1 user says قال شكرا ل لؤي على المشاركة المفيدة1 user says Thank You to لؤي for this post • احمد العراقي
str:='';
search:='';
for i := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
str := 'Field_Name' + ' LIKE '+ QuotedStr(DBGrid1.SelectedRows[i];+'%') ;
if i=0 then
search:= str else
search:= str +' OR '+ search;
End;
DataModule.Table.Filtered := False;
DataModule.Table.Filter := search;
DataModule.Table.Filtered := True
وعليكم السلام ورحمة الله
اخي العزيز ياحيذا لو تعطيني كود يعمل فالكود لا يعمل حتى مع بعض التعديلات التي اجريتها له طبعا خبرتي متواضعة لذلك لم انجح وشكرا
01-03-2020, 12:18 PM (آخر تعديل لهذه المشاركة: 01-03-2020, 01:46 PM بواسطة لؤي.)
(25-02-2020, 11:28 AM)احمد العراقي كتب : السلام عليكم اعضاء و مشرفي المنتدى الاعزاء
لدي سؤال و هو كيف يتم تصفية جدول حسب ما تم تحديده من dbgrid اي يقوم المستخدم بتحديد عدة سجلات من dbgrid ومن ثم عند الضغط على الزر يتم اخفاء جميع السجلات و ابقاء السجلات التي تم تحديدها فقط طبعا خاصية MultiSelect =true الموجودة في option
وشكرا
جرب هذا الكود ، لكن عليك تغيير IndexFieldName حسب قاعدة بياناتك
PHP كود :
procedure TForm2.FilterBtnClick(Sender: TObject); var I: Integer; Filter, IndexFieldName: string; Bookmark: TBookmark; begin IndexFieldName:= 'Id'; Filter:= ''; Query.DisableControls; try for I:= 0 to DBGrid1.SelectedRows.Count - 1 do begin Query.GotoBookmark(DBGrid1.SelectedRows[I]); Filter:= Filter + '(' + IndexFieldName + '=' + Query.FieldByName(IndexFieldName).AsString + ') '; if I < (DBGrid1.SelectedRows.Count - 1) then Filter:= Filter + ' OR '; end; Query.Filter:= Filter; Query.Filtered:= True;
finally EmployeeQuery.EnableControls; end; end;
كل من 1 user says قال شكرا ل ghostdz على المشاركة المفيدة1 user says Thank You to ghostdz for this post • احمد العراقي