البحث في قاعدة بيانات كبيرة من نوع Dbf
#1
السلام عليكم ورحمة الله تعالى وبركاته

حصل معي مشكل عندما كنت اود القيام بعملية بحث في قاعدة بيانات تحتوي على 40ألف سجل بيانات،
عملية البحث تستغرق مدة طويلة جدا مع ثقل البرنامج وتعطيله عند البحث...
هل من طريقة نافعة؟
الرد
#2

حاول ان تعمل Pack للقاعدة لكي تتخلص من السجلات المحذوفة
وبعدها ReIndex اعد الأدلة الفريدة
-
ان كنت تستخدم المكون TTable فاسرع وسيلة للبحث هي Locate
-
او استعمل Query للبحث احسن

والسلام عليكم ورحمة الله
الرد
#3
لا شك وأنك تستعمل قاعدة بيانات Paradox
وفي هذه الحالة لامفر من المرور بمحرك BDE الثقيل
وبالنظر إلى العدد الكبير للسجلات، فإنه لا مناص من أن تصادف مشكل البطء
هذا إن لم تصادف إنهيار المشروع فيما بعد
أحسن طريقة للتخفيف هي إستعمال الفلتر
لاينصح باستخدام Paradox في برامج كبيرة
أنصحك بما يلي: Absolute - CodeBase - Apollo - Elevate - MySQL ...

[ أنظر هنا وقارن
كود :
http://www.codebase.com/products/perfstats.php http://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm
الرد
#4
DBF ليس قواعد بيانات Paradox وانما DBase الشهيرة في الثمانينات على ايام DOS
وجود DBF ليس دليل حتى على استعمال محرك BDE اذ يمكن التعامل مع DBF باستخدام مكونات اخرى

بالنسبة لعدد السجلات والانهاير فهذا راجع للمبرمج وطريقة تصميم قواعده
اعطيك مثال: لدي برنامج تستخدمه جهة حكومية منذ سنة 2001 ولم يحدث به اي مشكل
مع العلم انه يتم اضافة الاف السجلات كل 21 يوم

اخيرا لا نرمي كل مرة اللوم على BDE والعيب فينا

والسلام عليكم ورحمة الله
الرد
#5
و عليكم السلام و رحمة الله

لتسريع البحث عليك بتعطيل الكائنات التي تقوم بعرض بيانات القاعدة كـDBEdit1 ... في وقت البحث مثلا
كود :
Table1.DisableControls; أمر البحث Table1.EnableControls;
أو

كود :
Datasource1.Enabled:=False; أمر البحث Datasource1.Enabled:=True;
إقتباس :[FONT=Arial]لا شك وأنك تستعمل قاعدة بيانات Paradox
[FONT=Arial]وفي هذه الحالة لامفر من المرور بمحرك BDE الثقيل
[FONT=Arial]وبالنظر إلى العدد الكبير للسجلات، فإنه لا مناص من أن تصادف مشكل البطء
[FONT=Arial]هذا إن لم تصادف إنهيار المشروع فيما بعد
إلى الآن مازالت كودجير متمسكة به في إصدارها الأخير لـ 2007 و أنا إلى الآن لم أجد معه مشاكل إلا مشكل حماية البيانات بكلمة المرور الذي اكتشفته مؤخرا و خطأ سجلات الـBlobs في حالة تغيير المتحوياتها.
من تشبه بقوم فهو منهم
الرد
#6
السلام عليكم
فقط اضافة شيء: لتسريع البحث في قاعدة البيانات لا بد من اضافة دليل وحيد Index وهو الاسلوب الامثل لتسريع قاعدة البيانات
الرد
#7
اتبع ما نصح به الاخ مهدي
حاول الا تستعمل في مشروعك كائنات DB مثلا استعمل Edit مكان DBNEdit

اذا اردت اخال تسجيلات عن طريق Edit اكتب
كود :
table1.fieldbyname('nom').asstring:=edit1.text
او
كود :
table1.fieldvalues['nom']:=edit1.text
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم