delphi4arab منتديات دلفي للعرب
بطى وتعليق عند البحث في قاعده بيانات - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : بطى وتعليق عند البحث في قاعده بيانات (/showthread.php?tid=2529)



بطى وتعليق عند البحث في قاعده بيانات - محمد الدرة - 28-10-2010

بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

مشكلتي بعد ان وجدت داله pos
التي تقوم بالبحث عن كلمه داخل حقل واجهتني مشكله
فقط للتعريف لدي قاعده بيانات اكسس
ربطتها بالدلفي باستخدام اداه adotable
استخدمت زر للبحث عن حقل الاسماء
بحيث لو بحثت مثلاً عن كلمه محمد تظهر الاسماء المتعلقه به سواء كان اسم الشخص او ابيه اوجده
يوجد فيقاعده البيانات 600000 سجل
باستخدام هذا الكود
PHP كود :
while not Table1.Eof do
  
begin
    
if Pos(Edit1.Text, Table1.FieldByName('CodeField').AsString) > 0 then
    begin
      ListBox1
.Items.Add(Table1.FieldByName('CodeNo').AsString);
    
end;
    
Table1.Next;
  
end; 
النتائج جيده لكن بعد فتره يصاب البرنامج بالشلل التام ويتوقف عن الاستجابه
وايضاً يكون البحث بطيى جداً مقارنه ببعض البرامج الذي تستخدم نفس قواعد البيانات
السؤال كيف يمكنني ان اجعل البحث سريع وبنفس فعاليه الداله pos
وكيف اجعل النتائج تظهر في listbox بدون ان يعلق البرنامج
ولكم جزيل الشكر


بطى وتعليق عند البحث في قاعده بيانات - shagrouni - 28-10-2010

السلام عليكم

أعتقد أن البطء ناتج عن عمليات الادخال في ListBox

قم بتعطيل العرض في listbox قبل عملية البحث ثم فعلها من جديد

كود :
ListBox1.Items.BeginUpdate; while not Table1.Eof do begin if Pos(Edit1.Text, Table1.FieldByName('CodeField').AsString) > 0 then begin ListBox1.Items.Add(Table1.FieldByName('CodeNo').AsString); end; Table1.Next; end; ListBox1.Items.EndUpdate;



بطى وتعليق عند البحث في قاعده بيانات - shagrouni - 28-10-2010

أيضا فيما يخص السرعة:
- استخدام ADOQuery أفضل من AdoTable
- استخدام AdoDataSet أفضل من ADOQuery
- إذا كنت تستخدم قاعدة بيانات اكسيس قم بتحديد خاصية CursorLocation إلى clServer
-- حاول استكشاف تأثيرات الخواص: CursorType بقيمة ctOpenForwardOnly ، و الخواص LockType و ReadOnly


بطى وتعليق عند البحث في قاعده بيانات - hanipino - 28-10-2010

السلام عليكم

كود :
النتائج جيده لكن بعد فتره يصاب البرنامج بالشلل التام ويتوقف عن الاستجابه

اذا كانت الوحدة DB معرفة فى برنامجك من جراء استعمال مكونات الاتصال جرب استعمال الدالة ProcessMessages

كود :
[color=Red]DB[/color].[color=Red]DB[/color]Application.ProcessMessages;