delphi4arab منتديات دلفي للعرب

نسخة كاملة : بطى وتعليق عند البحث في قاعده بيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم

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

مشكلتي بعد ان وجدت داله 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 بدون ان يعلق البرنامج
ولكم جزيل الشكر
السلام عليكم

أعتقد أن البطء ناتج عن عمليات الادخال في 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;
أيضا فيما يخص السرعة:
- استخدام ADOQuery أفضل من AdoTable
- استخدام AdoDataSet أفضل من ADOQuery
- إذا كنت تستخدم قاعدة بيانات اكسيس قم بتحديد خاصية CursorLocation إلى clServer
-- حاول استكشاف تأثيرات الخواص: CursorType بقيمة ctOpenForwardOnly ، و الخواص LockType و ReadOnly
السلام عليكم

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

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

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