كيفية عمل ضغط وإصلاح قاعدة البيانات اكسس بدون فتحها عن طريق كود الفيجول بيسك 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، فهي تحافظ على:
سرعة البرنامج
سلامة البيانات
استقرار النظام
وتمنع الكثير من المشاكل قبل حدوثها.
التسميات
برامج مكتبية