| الموضوع السابق | الموضوع التالي |
الغرض
إنشاء نسخة احتياطية لملف قاعدة بيانات أكسس (Access Database).
الصيغة
function MakeAccessDBBackup(SourcePath: string; var FailReason: Integer; var TargetFolder: string; AskForExtraCopy: Boolean = False): Boolean;
الوسائط (Parameters)
| SourcePath | اسم (و مسار) ملف قاعدة البيانات المطلوب نسخه. | |
| FailReason | بارامتر متغير (var) حيث سيتم تخزين رقم خطأ في حالة فشل عملية النسخ. | |
| TargetFolder | بارامتر متغير (var)، إما أن يكون نصاً فارغاً (empty string) أو أن يحتوي على مسار المجلد الهدف حيث ستحفظ النسخة الاحتياطية - انظر الشرح أدناه. | |
| AskForExtraCopy | بارامتر اختياري يحدد ما إذا كانت الدالة ستسأل المستخدم عن رغبته في إنشاء نسخة احتياطية أخرى في مجلد أو قرص آخر. |
الشرح
رغم اسمها الظاهر (لأنني أنشأتها أساساً لعمل نسخ احتياطي لقاعدة بيانات أكسس) فإنه في الواقع يمكن استعمال هذه الدالة لنسخ أي نوع من الملفات لأن الدالة لا تتأكد من نو ع الملف.
إذا نجحت الدالة في نسخ الملف المحدد في البارامتر SourcePath إلى المجلد المحدد في البارامتر TargetFolder فإنها تعيد True و يتم تخزين مسار المجلد الذي تم حفظ النسخة فيه في البارامتر TargetFolder و تصبح قيمة البارامتر FailReason صفراً (BACKUP_FR_SUCCESS)، و إذا فشلت لأي سبب فإنها تعيد False و تصبح قيمة البارامتر TargetFolder نصاً فارغاً (empty string) و تصبح قيمة البارامتر FailReason غير صفرية (كما هو مبين فيما بعد).
الملف المحدد في البارامتر SourcePath يجب أن يكون ملفاً موجوداً و إلا فإن الدالة ستعيد False.
إذا كانت قيمة البارامتر المتغير TargetFolder نصاً فارغاً فإن الدالة تعرض على المستخدم نافذة حوار لاختيار المجلد الهدف، حيث يمكنه اختيار مجلد موجود أو إنشاء مجلد جديد. أما إذا لم تكن قيمة البارامتر TargetFolder نصاً فارغاً فإن الدالة تتأكد من وجوده، و في حالة عدم وجوده فإنها تحاول إنشاءه. في حالة نجاح الدالة في نسخ الملف، سواءً إلى المجلد المحدد مسبقاً في البارامتر TargetFolder أو إلى المجلد الذي اختاره المستخدم فإن مسار المجلد الذي تم إليه النسخ يتم تخزينه في البارامتر TargetFolder (مع وجود شرطة مائلة في نهايته).
إذا كانت قيمة البارامتر AskForExtraCopy هي True فإن الدالة في حال نجحت - و فقط إذا نجحت - في نسخ الملف SourcePath إلى المجلد TargetFolder فإنها تعرض على المستخدم رسالة تسأله فيها عما إذا كان يريد إنشاء نسخة احتياطية إضافية في مجلد أو قرص آخر. و سواءً اختار المستخد نعم أم لا، أو تم النسخ الإضافي أم لا فإن نتيجة الدالة و قيمة البارامتر TargetFolder لا تتغيران، لكن قيمة البارامتر FailReason قد تتغير كما هو مبين أدناه.
نتائج الدالة (الثوابت المرافقة لقيم FailReason معرفة في الوحدة DNSDGen):
| القيمة المعادة | قيمة FailReason | النتيجة |
|---|---|---|
| True | BACKUP_FR_SUCCESS (0) | تم النسخ من SourcePath إلى TargetFolder بنجاح. النسخة الإضافية لم تكن مطلوبة أو تمت بنجاح. |
| True | BACKUP_FR_SUCCESS_NO_EXTRA (7) | تم النسخ من SourcePath إلى TargetFolder بنجاح. المستخدم أجاب بنعم على رسالة النسخة الإضافية، لكن العملية لم تتم بنجاح. |
| False | BACKUP_FR_SRC_NOT_FOUND (1) | لم تتم عملية النسخ لأن الملف المصدر غير موجود. |
| False | BACKUP_FR_USER_CANCEL (2) | لم تتم عملية النسخ لأن المستخدم اختار إلغاء الأمر عندما طُلب منه تحديد المجلد الهدف. |
| False | BACKUP_FR_TRGT_NO_ACCESS (3) | لم تتم عملية النسخ لأن المجلد الهدف غير موجود و لم تتمكن الدالة من إنشائه. |
| False | BACKUP_FR_WIN_API (10) | لم تتم عملية النسخ بسبب خطأ صادر من النظام. |
أعلى الصفحة
| الموضوع السابق | الموضوع التالي |