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

نسخ احتياطي لقاعدة البيانات

بدأه kafi في 15 أكتوبر 2014 · 15 رد · 2,081 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

 

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

 

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

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

 

ببساطة

 

قمت بارفاق مثالين

1- المثال الاول Q100

هو عبارة عن قاعدة البيانات  ( الجداول هنا موجودة ضمن القاعدة) عملية النسخ الاحتياطي تتم الى القرص D بفهرس اسمه Backup kafi ويتم تفريع مجلد باسم السنة الحالية، وبداخل هذا المجلد يوجد مجلد آخر برقم الشهر الحالي......وبداخله تتوضع النسخة حاملة بجانب اسمها، تاريخ يوم النسخ

 

كل الامور .......كما ترونها تعمل بشكل رائع وممتاز .......

 

2- المثال الآخر Q101

قمت هنا بفصل الجداول عن باقي مكونات القاعدة، وسميت قاعدة الجداول باسم Data 2014

 

سؤالي :

هو كيف استطيع ان انسخ القاعدة التي بها الجداول ؟

 

قد يقول احد الزملاء، كما نسخت في المثال الاول طبقه على المثال الثاني

 

اقول وهذا ما لم اجده في اي موضوع سابق ان الملف الذي به الجداول .......ليس بالضرورة ان يكون اسمه Data 2014 فقد يسميه المستثمر للبرنامج باسم Data_Factory_2014 او باسم Data_Personal_2014

 Dim strPath As String
    Dim stDocName As String
    Dim x, x1, dbname, stLinkCriteria, CurrentFilePath As String
    Dim idx As Integer
    Dim fso
    Dim hard_name As String
    Dim year1, month1 As String
    
    year1 = Format(Date, "yyyy")
    month1 = Format(Date, "mm")
     
    hard_name = DLookup("[store_hard_Name]", "Primary")

    x = Application.CurrentProject.Name
    x1 = Right(x, 6)
    
    For idx = Len(x) To 1 Step -1
        If Mid(x, idx, 1) = "." Then Exit For
    Next idx
    
    dbname = Left(x, idx - 1)
    x = dbname & "    " & Format(Date, "d-m-yyyy") & x1
    
   
    strPath = hard_name & "\Backup Kafi\" & year1 & "\" & month1
    
    If Not IsExist(hard_name & "\Backup Kafi", vbDirectory) Then MkDir hard_name & "\Backup Kafi"
    If Not IsExist(hard_name & "\Backup Kafi\" & year1, vbDirectory) Then MkDir hard_name & "\Backup Kafi\" & year1
    If Not IsExist(hard_name & "\Backup Kafi\" & year1 & "\" & month1, vbDirectory) Then MkDir hard_name & "\Backup Kafi\" & year1 & "\" & month1
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CopyFile Application.CurrentProject.Path & "\" & Application.CurrentProject.Name, strPath & "\" & x
    Set fso = Nothing
    
    stDocName = "Caution_Backup"
    DoCmd.openform stDocName, , , stLinkCriteria

اعرف ان التغيير يجب ان يكون بالسطر التالي من الكود المستخدم وهو

fso.CopyFile Application.CurrentProject.Path & "\" & Application.CurrentProject.Name, strPath & "\" & x

المشكلة هو معرفة اسم القاعدة التي بها الجداول والتي هي مرتبطة بالقاعدة الاساسية للبرنامج، ليتم كتابة اسمها بدلاً من Application.currentproject.Name

 

 

ارجو الاطلاع على المثالين المرفقين

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

 

والف شكر

 

كلمة السر 1

post-32358-0-56140100-1413396219_thumb.j

post-32358-0-77914600-1413396263_thumb.j

Q100.rar

Q101.rar

تم تعديل هذه المشاركة بواسطة kafi في 15 أكتوبر 2014 في 21:08

1
#2

up

#3

اخي كافي اتمنى ان يفيدك المثال المرفق

عمل نسخة احتياطية.zip

1

ما من كاتبٍ إلا سيفنى ... ويبقي الدهر ما كتبت يداه

فلا تكتب بخطك غير شيءٍ ... يسرك في القيامة أن تراه

 

 

مواضيع مفيدة

 

منظومة حضور وغياب موظفين/index.php/topic/290636-%D8%A5%D9%87%D8%AF%D8%A7%D8%A1-%D8%A7%D9%84%D9%89-%D9%85%D9%86%D8%AA%D8%AF%D9%89-%D8%A7%D9%84%D8%A3%D9%83%D8%B3%D8%B3-%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%A9-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D8%AD%D8%B6%D9%88%D8%B1-%D9%88%D8%BA%D9%8A%D8%A7%D8%A8-%D9%85/

#4

شكرا اخي

SandNet

على الرابط الذي تفضلت به

 

ولكنه بعيد نوعاً ما، عن ما اريد بسبب ان يطلب من المستثمر تحديد الملف ومن ثم اجراء النسخ.

 

انا لدي الجداول منفصلة بقاعدة منفصلة عن باقي مكونات البرنامج، واسمها لا اعرفه فقد يسمي المستثمر ملف الجداول

Data 2014

or

data_Factory_2014

.

,

,

وهكذا

 

فاانا اريد ان يعرف البرنامج اسم الداتا المرتبطة به

وعلى ضوء ذلك بتم عمل نسخة احتياطية، بمجرد الضغط على زر النسخ،

فانا لا ارغب ان اظهر للمستثمر، نافذة، ومن ثم يختار مكان تواجد القاعدة، ومن ثم يتم النسخ

 

ارجو ممن لديه الحل، التكرم والتفضل  به

نظرا لاهمية الموضوع الشديدة بالنسبة لي، ولاهميته بسبب عدم وجود اي طرح مماثل لما اطلب

 

والف شكر

تم تعديل هذه المشاركة بواسطة kafi في 18 أكتوبر 2014 في 00:49

#5

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

ما من كاتبٍ إلا سيفنى ... ويبقي الدهر ما كتبت يداه

فلا تكتب بخطك غير شيءٍ ... يسرك في القيامة أن تراه

 

 

مواضيع مفيدة

 

منظومة حضور وغياب موظفين/index.php/topic/290636-%D8%A5%D9%87%D8%AF%D8%A7%D8%A1-%D8%A7%D9%84%D9%89-%D9%85%D9%86%D8%AA%D8%AF%D9%89-%D8%A7%D9%84%D8%A3%D9%83%D8%B3%D8%B3-%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%A9-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D8%AD%D8%B6%D9%88%D8%B1-%D9%88%D8%BA%D9%8A%D8%A7%D8%A8-%D9%85/

#6

وانا باتنظار الجواب مثلك على احر من الجمر.

واظن ان الموضوع سيكون مفيداً جدا للكثيرين.

لان الواقع العملي هو هكذا.

تم تعديل هذه المشاركة بواسطة kafi في 18 أكتوبر 2014 في 11:29

#7

up

#8

up

#9

up

>>>>>>>>>>

#10

وعليكم السلام :)

 

ضع هذا الكود في وحدة نمطية (انا فعلت هذا ، ولكن يمكنك وضعها اينما تريد :) :

Public BE_Path As String

Public Function GetDBPath() As String
    Dim strFullPath As String

    strFullPath = Mid(DBEngine.Workspaces(0).Databases(0).TableDefs("tbl_Personel_Static").Connect, 11)
    GetDBPath = Left(strFullPath, InStrRev(strFullPath, "\"))

End Function

Public Function BE_or_FE()

    'if BE exits, use its path,
    'otherwise use the Application path
    
    'get the BE Path
    BE_Path = GetDBPath
    If Len(BE_Path & "") = 0 Then
        BE_Path = Application.CurrentProject.Path
    End If
    
    BE_Path = Mid(BE_Path, 1, Len(BE_Path) - 1)
          
End Function

ثم نادي الوحدة:

Call BE_or_FE

msgbox BE_Path

 

هذا يعطيك مسار جداولك ، سواء أكان برنامجك واحد ، او مقسم :)

 

اما بالنسبة الى الكود الذي وضعته انت ، وللحصول على اسم برنامج الجداول ، فغير هذا السطر:

x = Application.CurrentProject.Name

الى

x = Mid(DBEngine.Workspaces(0).Databases(0).TableDefs("YOUR_TABLE_NAME").Connect, 11)

مع مراعاة تغيير YOUR_TABLE_NAME الى اسم اي جدول مرتبط ببرنامج الجداول :)

 

واذا لم نكن نعرف اين وجود برنامج الجداول (اي انه جزء من البرنامج الاصلي او انه منقسم) ، استخدم:

x = Mid(DBEngine.Workspaces(0).Databases(0).TableDefs("YOUR_TABLE_NAME").Connect, 11)
if len(x & "")=0 then
x=application.currentproject.name
endif

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 25 أكتوبر 2014 في 14:35

1
#11
jjafferr كتب:

 

تم تعديل هذه المشاركة بواسطة jjafferr في 25 أكتوبر 2014 في 14:35

#12

الف شكر اخي جعفر

 

جزالك الله عني
وعن أعضاء المنتدى
كل خيــــــــــــــــــــــــــــــــر

 

بارك الله

فيك وبعلمك

 

اطلعت على الكود الثمين، الذي ارفقته اخي الكريم

 

وقمت بتعديل المثال بعض الشي، بحيث اصبح يعمل بشكل اتوماتيكي مائة بالمائة على نسخة ام قاعدة البيانات او الجداول عندما تكون منفصلة عن القاعدة

 

 

واحببت ان اضع المثال بعد التعديل حتى يستفيدوا منه اخوتنا بالمنتدى

نظرا لأهمية الموضوع

 

مرة ثانية

الف الف شكر

تم تعديل هذه المشاركة بواسطة kafi في 25 أكتوبر 2014 في 16:55

#13

...

Q101 Up.rar

تم تعديل هذه المشاركة بواسطة kafi في 25 أكتوبر 2014 في 22:06

#14

يا ولد ، من قدّك :)

تستاهل كل خير ، وشكرا على الإطراء والنسخة ، يمكن استطيع ان استفيد منها انا كذلك :)

 

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 25 أكتوبر 2014 في 17:06

#15

ايش رايك انك تكمل البرنامج وتعمل فيه خيار الضغط والاصلاح اولا ، ثم حفظ النسخة؟

 

انا اميل الى هذا الخيار :)

 

 

جعفر

#16

ممكن الحصول على نسخة بصيغة 2003

تم تعديل هذه المشاركة بواسطة iisys في 26 أكتوبر 2014 في 08:18

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