28-05-2016, 05:36 PM
السلام عليكم ورحمة الله وبركاته ،
في قاعدة بيانات من نوع Interbase ن لدي جدول به قائمة المنتجات تفوق 10000 (عشرة آلاف منتج) مرشحة للزيادة.
ولإعطاء الزبون إمكانية البحث عن المنتج إنطلاقا من اسم المنتج .
قمت بعرض قائمة المنتجات في Dbgrid موصولة ب Ibquery .
الزبون يقوم بإدخال اسم المنتج المراد البحث عنه في مكون Edit ، و الحدث OnChange لهذا الأخير أقوم بتصفية الأسماء للحصول على اسم المنتج المراد.
وهذا هو الإجراء الذي أقوم به:
لكن يبقى هذا الإجراء ثقيل نوعا ما ، وخاصة أن عدد المنتجات في تزايد.
تخيل لو أن الزبون قام بإدخال عشرين حرفا ، فعند كل حرف نقوم بهذا الإجراء.
ربما يقول القائل و لماذا لا تقوم بالبحث حتى يوم الزبون بإدخال اسم المنتج كاملا ؟
فأقول من خلال التجربة ، فعلا قد ينسى الزبون الاسم الكامل للمنتج .
فكرت في استعمال ClientDataSet و أي مكون آخر من نوع InMemory ...
هل من فكرة أخرى؟
جزاكم الله خيرا.
في قاعدة بيانات من نوع Interbase ن لدي جدول به قائمة المنتجات تفوق 10000 (عشرة آلاف منتج) مرشحة للزيادة.
ولإعطاء الزبون إمكانية البحث عن المنتج إنطلاقا من اسم المنتج .
قمت بعرض قائمة المنتجات في Dbgrid موصولة ب Ibquery .
الزبون يقوم بإدخال اسم المنتج المراد البحث عنه في مكون Edit ، و الحدث OnChange لهذا الأخير أقوم بتصفية الأسماء للحصول على اسم المنتج المراد.
وهذا هو الإجراء الذي أقوم به:
كود :
procedure TFMaForm.Edit1Change(Sender: TObject);
begin
IF (edit1.text <> '') then
begin
MaQuery.close;
MaQuery.SQL.Clear;
MaQuery.SQL.Add('SELECT CodeArt, Designation,QteStk');
MaQuery.SQL.Add('FROM MesArticles');
MaQuery.SQL.Add('WHERE UPPER(Designation) LIKE ''%' + UpperCase(edit1.Text) + '%''');
MaQuery.SQL.Add('ORDER BY CodeArt');
MaQuery.Active := true;
else
begin
MaQuery.close;
MaQuery.SQL.Clear;
MaQuery.SQL.Add('SELECT CodeArt, Designation,QteStk');
MaQuery.SQL.Add('FROM MesArticles');
MaQuery.SQL.Add('ORDER BY CodeArt');
MaQuery.Active := true;
end ;
end;لكن يبقى هذا الإجراء ثقيل نوعا ما ، وخاصة أن عدد المنتجات في تزايد.
تخيل لو أن الزبون قام بإدخال عشرين حرفا ، فعند كل حرف نقوم بهذا الإجراء.
ربما يقول القائل و لماذا لا تقوم بالبحث حتى يوم الزبون بإدخال اسم المنتج كاملا ؟
فأقول من خلال التجربة ، فعلا قد ينسى الزبون الاسم الكامل للمنتج .
فكرت في استعمال ClientDataSet و أي مكون آخر من نوع InMemory ...
هل من فكرة أخرى؟
جزاكم الله خيرا.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)