اعلان ادسنس

ضغط وإصلاح قاعدة البيانات اكسس - Compact and repair database


كيفية عمل ضغط وإصلاح قاعدة البيانات اكسس بدون فتحها عن طريق كود الفيجول بيسك VBA
مع الاستخدام المستمر لبرامج Access، تتضخم قاعدة البيانات ويزداد حجمها، وقد تظهر مشاكل مثل:
بطء في فتح الجداول والنماذج
أخطاء في الاستعلامات
تلف في بعض البيانات
زيادة غير طبيعية في حجم الملف
لحل هذه المشاكل، يوفر Access أداة مهمة جدًا وهي:
Compact and Repair Database  
والتي تقوم بضغط قاعدة البيانات وإصلاح الأخطاء تلقائيًا.
🎯 ما هو ضغط وإصلاح قاعدة البيانات؟
✔ الضغط (Compact)
يقوم بإعادة ترتيب البيانات داخل ملف Access، وإزالة المساحات الفارغة الناتجة عن:
حذف سجلات
تعديل بيانات
حذف كائنات (جداول – نماذج – تقارير)
وبالتالي يقل حجم الملف ويصبح أسرع.
✔ الإصلاح (Repair)
يقوم بالبحث عن الأخطاء في:
الجداول
الفهارس
العلاقات
الكائنات التالفة
ويحاول إصلاحها تلقائيًا.
🧩 أولًا: تشغيل ضغط وإصلاح قاعدة البيانات يدويًا
✔ من داخل Access
افتح قاعدة البيانات
من القائمة:
File
اختر:
Info
ثم:
Compact and Repair Database
سيقوم Access بإنشاء نسخة مضغوطة ومُصلّحة من قاعدة البيانات.
🖥️ ثانيًا: ضغط وإصلاح قاعدة البيانات تلقائيًا عند الفتح
يمكنك جعل Access يقوم بالضغط والإصلاح تلقائيًا كلما فتحت البرنامج.
✔ الخطوات:
افتح:
File → Options
اختر:
Current Database
فعّل الخيار:
Compact on Close
بهذا سيتم ضغط قاعدة البيانات كلما أغلق المستخدم البرنامج.
🧪 ثالثًا: ضغط وإصلاح قاعدة البيانات باستخدام VBA
إذا كنت تريد تنفيذ العملية من خلال زر داخل البرنامج، استخدم الكود التالي:
vba
Public Sub CompactDB()
    Dim SourceFile As String
    Dim TempFile As String
    SourceFile = CurrentDb.Name
    TempFile = CurrentProject.Path & "\TempDB.accdb"
    ' ضغط وإصلاح
    DBEngine.CompactDatabase SourceFile, TempFile
    ' استبدال النسخة القديمة بالجديدة
    Kill SourceFile
    Name TempFile As SourceFile
    MsgBox "تم ضغط وإصلاح قاعدة البيانات بنجاح.", vbInformation
End Sub
ماذا يفعل هذا الكود؟
ينشئ نسخة مضغوطة
يحذف النسخة القديمة
يعيد تسمية النسخة الجديدة
يعرض رسالة نجاح
🧱 رابعًا: ضغط وإصلاح قاعدة البيانات الخلفية (Back-End)
إذا كان لديك برنامج Access مقسم إلى:
Front-End
Back-End
يجب ضغط الـ Back-End أيضًا.
✔ مثال كود لضغط الـ Back-End:
vba
Public Sub CompactBackend()
    Dim BE As String
    Dim Temp As String
    BE = "C:\Database\Backend.accdb"
    Temp = "C:\Database\Backend_Temp.accdb"
    DBEngine.CompactDatabase BE, Temp
    Kill BE
    Name Temp As BE
    MsgBox "تم ضغط وإصلاح قاعدة البيانات الخلفية.", vbInformation
End Sub
⚠️ ملاحظات مهمة
يجب أن يكون جميع المستخدمين خارج قاعدة البيانات قبل الضغط.
لا تضغط قاعدة البيانات أثناء تشغيل استعلامات أو عمليات كبيرة.
احتفظ دائمًا بنسخة احتياطية قبل الضغط.
الضغط المتكرر يحافظ على أداء البرنامج ويمنع التلف.
⭐ فوائد ضغط وإصلاح قاعدة البيانات
تقليل حجم ملف Access بشكل كبير
تحسين سرعة فتح الجداول والنماذج
إصلاح الأخطاء الناتجة عن الاستخدام الطويل
منع تلف البيانات
تحسين أداء البرنامج بشكل عام
خلاصة
عملية Compact and Repair Database ضرورية لأي برنامج Access يعمل بشكل يومي.
سواء قمت بها يدويًا، تلقائيًا، أو باستخدام VBA، فهي تحافظ على:
سرعة البرنامج
سلامة البيانات
استقرار النظام
وتمنع الكثير من المشاكل قبل حدوثها.

إرسال تعليق

أحدث أقدم
اعلان ادسنس اول المقال
اعلان ادسنس نهاية المقال
اعلان ادسنس بعد مقالات قد تعجبك

نموذج الاتصال