السلام عليكم استاذ محمود حاتم احمد
تفسير الكود ان خزن النسخة الاحتياطية يتم في فولدر backup
ويجب ان يكون الفولدر بجانب قاعدة البيانات اي في نفس المسار وعليه هناك طريقتين للحل حسب فهمي لطلبك
الاولى : ان ننشاء فولدر بجانب قاعدة البيانات كلما دعت الضرورة لذلك وهي طريقة غير عملية لاننا سنجد تعدد الفولدر وباماكن مختلفة كذلك تشتت النسخ الاحتياطية وهذا هو كود الطريقة الاولى
On Error GoTo MyErr
Dim strFilePath As String
strFilePath = CurrentProject.Path & "\backup"
Dim OldFile, DBwithEXT, DBwithoutEXT, NewFile, CopyMyDB
adad = CurrentProject.Path & "\Blocks_be.accdb"
OldFile = adad
DBwithEXT = Dir(OldFile)
DBwithoutEXT = Left(DBwithEXT, Len(DBwithEXT) - 4)
If Len(Dir(strFilePath, vbDirectory)) = 0 Then
MkDir strFilePath
SetAttr strFilePath, vbNormal
End If
NewFile = strFilePath & "\Blocks_be-" & Format(Date, "yyyy-mm-dd") & "-" & Format(Now(), "Hh-Nn-ss-AMPM.") & Right(DBwithEXT, 5)
CopyMyDB = "cmd.exe /C copy " & """" & OldFile & """" & " " & """" & NewFile & """"
Shell CopyMyDB, 0
MyErr:
If Err.Number <> 0 Then
MsgBox Err.Number & " - " & Err.Description
End If
الطريقة الثانية : ان نجعل في الكود مسار ثابت لخزن النسخ الاحتياطية وبالتالي يمكن تشغيل قاعدة البيانات في اي مكان من الهارد وهذه الطريقة عملية اكثر ولا تؤدي الى تشتت النسخ الاحتياطية
وهذا كود الطريقة الثانية علما ان الحفظ سيتم في c في فولدر backup
On Error GoTo MyErr
Dim strFilePath As String
strFilePath = "C:\backup"
Dim OldFile, DBwithEXT, DBwithoutEXT, NewFile, CopyMyDB
adad = CurrentProject.Path & "\Blocks_be.accdb"
OldFile = adad
DBwithEXT = Dir(OldFile)
DBwithoutEXT = Left(DBwithEXT, Len(DBwithEXT) - 4)
If Len(Dir(strFilePath, vbDirectory)) = 0 Then
MkDir strFilePath
SetAttr strFilePath, vbNormal
End If
NewFile = strFilePath & "\Blocks_be-" & Format(Date, "yyyy-mm-dd") & "-" & Format(Now(), "Hh-Nn-ss-AMPM.") & Right(DBwithEXT, 5)
CopyMyDB = "cmd.exe /C copy " & """" & OldFile & """" & " " & """" & NewFile & """"
Shell CopyMyDB, 0
MyErr:
If Err.Number <> 0 Then
MsgBox Err.Number & " - " & Err.Description
End If
وعذرا للاطالة