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

[ تمت الإجابة ]أخذ نسخة احتياطية لقاعدة الجداول إذا كانت على الشبكة

بدأه أبو ياسر في 26 مارس 2010 · 10 رد · 919 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عملت برنامج صغير وقمت بتقسيم قاعدة البيانات

فلو كان العمل على جهاز واحد فهنا لا مشكلة حيث سأقوم بتحديد مكان قاعدة الجاول وسيكون المكان معلوم ومحدد مسبقا وكذلك يمكن تحديد مكان النسخة الاحتياطية الآلية اليومية عند كل اغلاق لقاعدة الواجهات ويتم ذلك يدويا او عن طريق التنصيب كما هو معروف .

يعني كل هذا سوف يتم عمله مسبقا في البرنامج قبل تسليمه الى المستخدم .

ولكن اذا كان البرنامج سيوضع على اكثر من جهاز وسيتم الاتصال بقاعدة الجداول عن طريق الشبكة ، وقاعدة البيانات التي تحوي الجداول ستكون على الجهاز الرئيس

السؤال : كيف يتم اخذ نسخة احتياطية من هذه القاعدة

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

لعلي استطعت ان اوضح المطلوب

آمل من اهل العلم المساعدة جزاكم الله خيرا ،،،

#2

للرفع

لأهل العلم والخبرة : ارجو افادتي مشكورين او احالتي ان كان هناك مشاركات تتكلم عن هذا الموضوع ، فقد بحثت ولم أجد

#3

السلام عليكم ورحمة الله وبركاته

عزيزي sabhha ،

أفهم من كلامك أنك تعمل على شبكة داخلية ، إذاً إليك عزيزي حلّ أحسن ، ألا وهو بوضع قاعدة البيانات على السيرفر ، وجعل كل الأجهزة تقرأ من قاعدة البيانات الموجودة على السيرفر .

وإن لم يكن هذا طلبك ، فأرجوك أن تعطي مثال عملي ، بارك الله فيك .

post-12787-12741339659298.jpg

ومامن يد إلا يد الله فوقها *** وما من ظالم إلا سيبلى بأظلم

تفضل أخي الكريم | موسوعة الحميدي الذهبية | بأجزائها الثلاثة مع هدية الموسوعة .

#4

أشكرك استاذي الكريم على الرد وكلامك صحيح

زيادة في الإيضاح :

أنا لست من سيعمل على الشبكة وإنما سيتم ارسال البرنامج الى المستخدم عبر البريد .

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

#5

السلام عليكم ورحمة الله وبركاته

عزيزي sabhha ،

نعم نعم عزيزي ، الآن فهمت عليك ، تكرم عيونك ، هذا مثال ( لا جدال أنه للأخت زهرة :) ) وفيه مناقشة مهمة جداً جداً بالنسبة لفتح القاعدة بعد الوقت المحدد للنسخ ، أرجوا ملاحظتها .

/index.php?showtopic=154766&st=0&p=776677&hl=%D9%86%D8%B3%D8%AE%D8%A9%20%D8%A5%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A%D8%A9%20%D9%81%D9%8A%20%D9%88%D9%82%D8%AA%20%D9%85%D8%B9%D9%8A%D9%86&fromsearch=1entry776677

ويمكنك أيضاً عمل نسخة إحتياطية ، عن طريق برنامجي ال buckup وال schedule الموجودين في كل جهاز ( ينزلون مع الويندوز )

post-12787-12741339659298.jpg

ومامن يد إلا يد الله فوقها *** وما من ظالم إلا سيبلى بأظلم

تفضل أخي الكريم | موسوعة الحميدي الذهبية | بأجزائها الثلاثة مع هدية الموسوعة .

#6

اشكرك أخي على التواصل

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

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

سأطرح السؤال بصيغة أخرى

توضيح أكثر : بعيدا عن الشبكات والسيرفرات

اريد اخذ نسخة لقاعدة البيانات ( الجداول) بدون أن اكتب موقعها مسبقا في الكود ، يعني في أي مكان اضعها فبمجرد الارتباط بها يقوم الكود الخاص بالنسخ بالتعرف على المسار

آمل أني الآن استطعت أن اصوغ السؤال بطريقة مناسبة وسأقوم ان شاء الله بارفاق مثال بذلك للتسهيل

#7

أخي الكريم، هذا يكافئ السؤال التالي: كيف يمكن معرفة مسار قاعدة بيانات خلفية نرتبط بجداولها من قاعدة البيانات الحالية.

يمكن معرفة ذلك من خلال خاصية في الجداول المرتبطة (في القاعدة الحالية) تسمى connect. وعلى هذا، من الممكن أن نختار في الكود أي جدول مرتبط في قاعدة البيانات الحالية، ثم نختبر هذه الخاصية لنعرف مسار قاعدة البيانات الخلفية. اختيار الجدول ينبغي أن يتم آلياً، وقد تحدده في الكود إذا كنت متأكداً من وجود جدول باسم معين، أو يمكن، كما في المثال التالي، اختيار الجدول الأخير دوماً، من أجل تجنب جداول النظام التي لا تكون مرتبطة:

    Dim tdfs As DAO.TableDefs
    Dim tdf As DAO.TableDef
    Dim sSourceDB As String

    Set tdfs = CurrentDb.TableDefs
    Set tdf = tdfs(tdfs.Count - 1)
    sSourceDB = Right(tdf.Connect, Len(tdf.Connect) - 10)

المتغير sSourceDB يحوي الآن مسار قاعدة البيانات الخلفية، وتستطيع استخدامه في أمر copy عادي إلى أي وجهة تريد:

shell("copy /Y " & sSourceDB & " " & sBackupDB & "")

حيث يحوي المتغير sBackupDB مسار قاعدة البيانات الاحتياطية، ويفضل تكوين اسمها مع تضمين التاريخ حتى يتم السماح بحفظ أكثر من نسخة احتياطية واحدة...

والله أعلم.

#8

الف شكر ياعميد البرمجة

أحمد مبارك الحيقي كتب:

المتغير sSourceDB يحوي الآن مسار قاعدة البيانات الخلفية، وتستطيع استخدامه في أمر copy عادي إلى أي وجهة تريد:

طبعا يحوي مسارها وأيضا اسمها لانه سيتم نسخها

أريد الآن رفع الله قدرك

الأخرى وهي sBackupDB أن تحوي المسار نفسه لكي اضعهابجانب اختها حتى تؤنس وحدتها أسعد الله قلبك ،،،

تم تعديل هذه المشاركة بواسطة sabhha في 28 مارس 2010 في 23:49

#9

للرفع

#10

أعتذر أخي عن التأخير، والأمر يسير إن شاء الله...

الخطوة الأولى أن تستخرج المسار (مع اسم الملف) من المتغير sSourceDB، بدون اللاحقة (.mdb) كالتالي:

sBackupDB = Left(sSourceDB, Len(sBackupDB) - 4)

هذا يعيد كل أحرف المتغير sSourceDB من اليسار عدا الأربعة أحرف الأخيرة، ثم يمكن أن تعدل في اسم ملف النسخة الاحتياطية بإضافة التاريخ مثلاً، ولا تنس إضافة اللاحقة (.mdb):

sBackupDB = Left(sSourceDB, Len(sBackupDB) - 4) & Format(Now(), "dd-mm-yyyy hh-nn-ss") & ".mdb"

والله أعلم.

#11

الف..... الف ..... الف

:ty:

1

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…