يتم ضغط قاعدة البيانات في أكسيس من القائمه :
ادوات --- ادوات مساعده لقواعد البيانات --- ضغط قاعدة البيانات واصلاحها .
هذا سهل ولكن كيف تضغط قاعدة بيانات عن طريق الكود في أكسيس ؟
لا توجد طريقه مباشره لضغط قاعدة البيانات المفتوحة في أكسيس عن طريق الكود (على حد علمي) ولكن هناك بعض الحيل التي يستخدمها المبرمجون لحل المشكله :
** اذا كانت القاعده لا تفتح أكثر من مره في الوقت الواحد (يعني ليست على شبكه) .. فيمكنك تفعيل الخيار ضغط عند الإغلاق من القائمه أدوات -- خيارات -- عام -- ضغط عند الإغلاق .
وسيضغط أكسيس القاعده عند كل مره يغلق فيها القاعده ولكن اذا كنت تشارك هذه القاعده مع الآخرين في نفس الوقت ، فلن يتم حدث الإغلاق .
** الطريقه الثانيه وهي الأفضل للمحترفين هي ان تجعل الجداول في قاعده وجميع الأكواد والماكرو والنماذج والاستعلامات في قاعده أخرى وهذا يحل كثير من الأمور منها :
* عندما توزع التطبيق تقوم بإغلاق القاعده المحتويه على الكود فقط .. وتبقى قاعدة الجداول متاحه للمستخدم يستطيع أن ينسخ منها الجداول وأن ينشئ فيها استعلامات حسب الرغبه .
* القاعده الأساسيه ليست كبيره الحجم وانما بها ارتباطات الى جداول كبيره . وهي أسرع مما لو كانت قاعده واحده .
* عندما تريد اصلاح القاعده أو ضغطهاعن طريق الكود تقوم بذلك على قاعدة الجداول بسهوله . لا نها غير مفتوحه .
والكود اللازم لذلك هو :
-----
DBEngine.CompactDatabase strInputMDB, strOutputMDB
-----
حيث strInputMDB هو اسم القاعده الحالي (data.mdb فرضا)
و strOutputMDB هو اسم القاعده الذي تريد أن تضغط اليه (temp.mdb فرضا).
ماعليك الا أن تمسح القاعده data.mdb وتغير اسم القاعده temp.mdb الى data.mdb بواسطة الأمرين :
kill و FileCopy .
*** بالنسبة لضغط القاعده في فيجوال بيسك فالأمر أسهل استعن بالمثال التالي :
http://www.vb-world.net/databases/tip482.html
ربما توجد طرق أسهل اتمنى من أصحاب الخبره أن يفيدونا .