الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نسخة إحتياطية كل يوم على مدار الاسبوع

بدأه sweety78 في 9 أكتوبر 2011 · 9 رد · 3,290 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

مطلبي هو (كود) يوضع في عند الاغلاق بحيث:

عند إغلاق قاعدة البيانات يقوم بعمل نسخة احتياطية تحمل اسم قاعدة البيانات + اليوم، على مدار الاسبوع... بحيث لو افترضنا ان اليوم هو الاحد، عند اغلاق قاعدة البيانات يقوم بإنشاء نسخة احتياطية تحمل اسم قاعدة البيانات + اليوم، وان صادف وجود نسخة لنفس اليوم من الاسبوع الماضي يتم استبدالها او النسخ فوقها.

مثال على اسم قاعدة البيانات بعد النسخ... لو افترضنا ان قاعدة البيانات اسمها Test، من المفترض أن يكون اسم ملف النسخة الاحتياطية مثلاُ Test-sat.

لقد حاولت أن ابحث في المنتدى عن مشاركات مشابهة لكنني لم اوفق.

فإعتقادي ان هذه الطريقة من Backup ستكون مفيدة جداُ للجميع

مع خالص تحيااااتي

#2

هذا الكود المطلوب إن شاء الله

جاد به علينا الاستاذ: "ابوالأنس" سابقاً

ونجود به على الجميع الآن، مع اجراء بعض التعديلات المطلوبة

نسخ احتياطي اسبوعي.rar

#3
عبيدالله كتب:

هذا الكود المطلوب إن شاء الله

جاد به علينا الاستاذ: "ابوالأنس" سابقاً

ونجود به على الجميع الآن، مع اجراء بعض التعديلات المطلوبة

لك الشكر اخي عبيد الله ولكن سؤالي اذا كانت القاعدة مقسمة لقاعدة تحتوي على النماذج والتقارير والاستعلامات واخري تحتوي على الجداول فقط فكيف يتم ذلك

#4

على الرحب والسعة "خالد يحيى الامام"

انت تقصد: كيف ننسخ ملف الجداول؟

الحل بسيط جداً، قم بتعيين مسار واسم ملف الجداول

On Error Resume Next
Dim OldFile As String, DBwithEXT, DBwithoutEXT, NewFile As String, CopyMyDB
OldFile = "D:\data.mdb"  'اسم ومسار الملف الأصلي الذي نرغب في عمل نسخة احتياطية منه
DBwithEXT = Dir(OldFile)
DBwithoutEXT = Left(DBwithEXT, Len(DBwithEXT) - 4)
NewFile = "D:\data" & Format(Date, "dddd") & ".mdb"  '& Right(DBwithEXT, 3)'لصق ملف البيانات في المسار المحدد مع امكانية حذف الملف السابق الذي يحمل نفس الاسم إن وجد
CopyMyDB = "cmd.exe /C copy " & """" & OldFile & """" & " " & """" & NewFile & """"
Shell CopyMyDB, 0

ملف البيانات الأصلي ومساره هنا هو: D:\data.mdb

ملف البيانات الاحتياطي ومساره هنا هو: "D:\data" & Format(Date, "dddd") فإذا حصل الحفظ للنسخة الاحتياطية يوم الاثنين فسيكون اسم ملف النسخة الاحتياطية: dataالاثنين.mdb

#5

ويمكن أيضا بتشغيل سكربت ( Batch File ) في مجدول المهام بحيث ينسخ جميع مابداخل المجلد و يضعه في قرص آخر مثلا لكل يوم منفردا .

وهذه الطريقة أستخدمها في العمل ليس فقط لقاعدة بيانات أكسس و إنما لقاعدة بيانات MySQL كاملة يوميا خلال ايام الاسبوع الــ 7

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#6

شكراً لكل من شارك في الحل...

أخي فيصل الحربي

هل من الممكن ان تشرح لنا كيفية عمل Batch file وكيفية تطبيقة؟

في إعتقادي انه سيضيف الكثير لمرتادي وأعضاء المنتدى.

مع جزيل الشكر

#7

السلام عليكم

معذرة أخي عبيدالله...

لم يعمل معي المثال الذي وضعته... لقد قمت بالضغط على زر (تكوين) ولكن لم اجد نسخة احتياطية

لقد بحثت في المسار D ولم اجد نسخة احتياطية.

أنا استخدم Access 2007 فهل تؤثر هذه النسخة؟

أو ما المشكلة

أرجو افادتي

تحياااااتي

#8

لقد وضعت المثال على فرضية انك تريد عمل نسخة احتياطية لملف قاعدة البيانات المسمى: Data.mdb الموجود على المسار: D:\ وتضعه على نفس المسار مع تغيير اسمه.

الكود يعمل بشكل ممتاز.. قد يكون الخطأ في التطبيع لديك.

إن كانت تريد أن تنسخ الملف الذي تريد فما عليك إلا أن تغير الاسم والمسار الذي في الكود إلى اسم ومسار الملف تبعك.. سواء كان نفس الملف الذي تعمل منه أو ملف آخر..

اذا لم تستطع أو لم ينجح معك فكتب لي اسم الملف مع نوعه مع المسار بالكامل وكذلك مسار مجلد حفظ النسخ الاحتياطية..

بالتوفيق

تم تعديل هذه المشاركة بواسطة عبيدالله في 11 أكتوبر 2011 في 05:12

#9

استاذي عبيدالله...

بالفعل كما اسلفت الكود يعمل بشكل جيد، وقد اخطأت في اسم الملف والمسار وعندما قمت بعمل التغيير اللازم نجحت العملية

شكراً جزيلاً وتقبل تحيااااتي

#10

أولا :

ننشئ مجلد على القرص C باسم Backup ثم بداخل هذا المجلد ننشئ 7 مجلدات باسماء الاسبوع

01-Sat
02-Sun
03-Mon
04-Tue
05-Wed
06-Thu
07-Fri

ثانيا :

ننشئ 7 ملفات باتش بواسطة المفكرة ( Notepad )

نضع الاوامر التي نرغب في تنفيذها

مثال لملف باتش يوم السبت :

copy Y:\*.* C:\BackUp\01-SAT\

مثال لملف باتش يوم الأحد :

copy Y:\*.* C:\BackUp\02-Sun\

شرح الاوامر أعلاه

هذا الأمر يقوم بنسخ جميع الملفات الموجوده في القرص Y الى المجلد 01-SAT الموجود تحت المجلد BackUp في القرص C

طبعا بالامكان تحديد ملف بعينه بدلا من *.* التي تفيد جميع الملفات الموجوده بالقرص .

لا ننسى تغيير اللاحقة للملف الناتج من txt إلى bat لكي يصبح ملف باتش .

ثالثا :

نذهب الى مجدول المهام ( Task Schedule )

كما في الصورة التالية :

post-5603-036215200 1318314354_thumb.jpg

ثم نضغط على Add Scheduled task ثم Next

post-5603-054538800 1318314374_thumb.jpg

ثم نضغط على Browse كما بالصورة التالية

post-5603-021340000 1318314395_thumb.jpg

و نختار ملف الباتش الذي قمنا بإنشائه .

ونكرر العملية لكل يوم من ايام الاسبوع

وبهذا سيقوم مجدول المهام من أخذ نسخه كامله من الملفات يوميا حسب الاسم .

كتبت الرد على عجاله فعذرا على اي خطأ

===

المرفقات
1.jpg2.jpg3.jpg
1

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 

مواضيع مشابهة