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

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

مغلقمُجاب
بدأه ebraheem-w في 28 يناير 2014 · 9 رد · 804 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

علما ان مسار الملف

\\backupsrv\new\db1

اي ﻻ يوجد محرك اقرص مثل d ااو c

ولكم جزيل الشكر

#3

اشكرك اخي very على المشارمة المفيدة

ولكن اريد المساعدة في تحديد مسار قاعدة البيانات

ﻻن عند الضغط ع خصائص قاعدة البيانات

يعطيني مسار دون قرص

\\backupsrv\new\db1

#4

يرجى المساعدة

#5

اين الخبراء

#6

مافي ردود

#7

السلام عليكم

 

استخدم كود النسخ التالي:

FileCopy "Source File", "Destination Direct"

 مثال علي الكود "مع تغيير المسارات":

FileCopy "\\192.168.1.1\common\AAA.xlsx", "D:\Profiles\BBB.xlsx"

تقدر تحط الكود في اي حدث

 

برجاء العلم إذا كان الملف قيد التشغيل لن يعمل كود النسخ.

 

 كمان في أمثلة كتير أتقدمت في المنتدي بخصوص موضوع نسخ قاعدة البيانات ... أستخدام البحث

 

 

بالتوفيق

تم تعديل هذه المشاركة بواسطة Hisham_wz في 4 فبراير 2014 في 12:45

#8

جزاك الله كل خير اخي هشام

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

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

بدل تحديد المسار

اي اني احتاج نسخة للبيانات

#9 أفضل إجابة

السلام عليكم

 

 

أخري الكريم

 

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

 

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

 

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

 

الكود كامل مع الشرح :

'  إذا وجد أنك لم تحدد مسار الحفظ يخرج من الحدث
If IsNull([TxtFilename]) Then
MsgBox "أنت لم تحدد مسار القاعدة المراد نسخ الجدوال بها", vbInformation
Exit Sub
End If


Dim CountOFTablesNames As Integer   '  لمعرفة عدد الجدوال المرتبطة داخل قاعدة البيانات
Dim StartWhileFrom As Long '   متغير يحمل قيمة رقم بداية اللوب منه
Dim EndWhileFrom As Long  '  متغير يحمل قيمة رقم لنهاية اللوب

' للاستفسار عن عدد الجدوال المرتبطة داخل قاعدة البيانات حتي نقوم بتشغيل الكود او الخروج منه
CountOFTablesNames = Nz(DCount("Name", "MSysObjects", "(((Left([Name],1))<>'~') AND ((Left([Name],4))<>'MSys') AND ((MSysObjects.Type) In (1,4,6)) AND ((MSysObjects.Database) Is Not Null) AND ((Right([ForeignName],3))<>'txt'))"), 0)


    ' يتم تشغيل الكود في حالة انه يوجد جدوال مرتبطة داخل قاعدة البيانات
    '  اذا وجد ان عدد الجدوال المرتبطة اكبر من الصفر يبدا في تشغيل الكود
    If CountOFTablesNames > 0 Then
            
                On Error Resume Next   '  اذا وجد خطئ يتخطي الخطأ
                DoCmd.RunSQL "DROP TABLE TempLinkedTablesNames" '     يقوم هنا بحذف جدول مؤقت يتم انشائه لكتابة اسماء الجدول المرتبطة به
                On Error GoTo 0    '  لتشغيل اذا وجد خطا يظهر الخطا
                'نقوم بانشاء جدول مؤقت لكتابة اسماء الجدول المرتبطة به
                DoCmd.RunSQL "CREATE TABLE TempLinkedTablesNames (auto_no AUTOINCREMENT,TableName VARCHAR(255),CONSTRAINT RegA_PK PRIMARY KEY(auto_no))"
                '  نقوم هنا بادراج اسماء الجدول المرتبطة بالجدول المؤقت
                    DoCmd.SetWarnings False
                DoCmd.RunSQL "INSERT INTO TempLinkedTablesNames ( TableName ) SELECT MSysObjects.Name AS table_name FROM MSysObjects WHERE (((Left([Name],1))<>'~') AND ((Left([Name],4))<>'MSys') AND ((MSysObjects.Type) In (1,4,6)) AND ((MSysObjects.Database) Is Not Null) AND ((Right([ForeignName],3))<>'txt'));"
                    DoCmd.SetWarnings True
                ' نقوم بالاستعلام عن اكبر قيمة داخل الجدول المؤقت لكي نسطتيع ايقاف اللوب عندها
                StartWhileFrom = 1
                EndWhileFrom = DMax("auto_no", "TempLinkedTablesNames")
                Dim SelectTableName As String   '  متغير يقوم بحمل قيمة اسم الجدول المراد العمل عليه
                
                
                                   ' طول ما قيمة عدد الجدوال اكبر من قيمة البداية يستمر في عمل اللوب
                                While EndWhileFrom >= StartWhileFrom
                                 
                                     DoCmd.SetWarnings False   '  نوقف تحذيرات نقل البيانات
                                     
                                        '  نقوم هنا بالاستعلام عن قيمة أول اسم جدول حتي نقوم بترحيل الجدول الي القاعدة المحددة مقدما
                                         SelectTableName = DLookup("TableName", "TempLinkedTablesNames", "auto_no=" & StartWhileFrom)
                                         
                                         ' نقوم هنا بانشاء جدول جديد بنفس خصائص وقيم حقول الجدول المرتبط
                                         DoCmd.RunSQL "SELECT " & SelectTableName & ".* INTO xxx_" & SelectTableName & " FROM " & SelectTableName & "; "
                                             'نقوم هنا بتصدير الجدول الذي قمنا بانشائه الي قاعدة البيانات المحددة
                                         DoCmd.TransferDatabase acExport, "Microsoft Access", Me.TxtFilename, acTable, "xxx_" & SelectTableName, SelectTableName, False
                                           '  نقوم هنا بحذف الجدول الذي قمنا بانشائه
                                         DoCmd.RunSQL "DROP TABLE " & "xxx_" & SelectTableName
                                          'نقوم باضافة قيمة واحد لكي نستطيع التنقل الي الجدول التالي
                                         StartWhileFrom = StartWhileFrom + 1  '  نقوم باضافة قيمة واحد للقيمة حتي المرة القادمة ننتقل للسجل التالي
                                     
                                     DoCmd.SetWarnings True   '  نقوم بتشغيل تحذيرات نقل البيانات مرة اخري
                                 
                                Wend
                                
                                MsgBox "تم نسخ الجدوال المرتبطة بنجاح", vbInformation

                    
    
    Else
    
        
                MsgBox "لا يوجد جدوال مرتبطة داخل قاعدة البيانات", vbInformation


    End If

مرفق قاعدة البيانات التي بها المثال كامل

 

Backup Linked Tables.rar

 

 

 

 

بالتوفيق

1
#10

اشكرك اخي هشام على الاجابة المفصله والمثال المرفق

وجعله الله في ميزان حسناتك

هذا الموضوع مغلق.

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

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

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

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

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