اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

المساعدة فى تعديل كود تحديد المسار


إذهب إلى أفضل إجابة Solved by husamwahab,

الردود الموصى بها

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


Private Sub Command0_Click()
On Error GoTo MyErr

Dim OldFile, DBwithEXT, DBwithoutEXT, NewFile, CopyMyDB
adad = CurrentProject.Path & "\Blocks_be.accdb"
OldFile = adad
DBwithEXT = Dir(OldFile)
DBwithoutEXT = Left(DBwithEXT, Len(DBwithEXT) - 4)

NewFile = CurrentProject.Path & "\backup\" & "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 Sub
 لعمل نسخة احطياطية للقاعدة المشكلة التى لدى عند تحيد المسار من  برتشن اخر لايعمل يجب ان يكون قريب من الملف  مثل d: 

رابط هذا التعليق
شارك

  • أفضل إجابة

السلام عليكم استاذ محمود حاتم احمد

تفسير الكود ان خزن النسخة الاحتياطية يتم في فولدر 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

وعذرا للاطالة

 

رابط هذا التعليق
شارك

3 دقائق مضت, محمود حاتم احمد said:

شكرا اخي هجرب الطريقة

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

رابط هذا التعليق
شارك

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

A.accdb

رابط هذا التعليق
شارك

عدلت على طريقة الاخ حسام  ووصلت للمطلوب 


On Error GoTo MyErr
Dim strFilePath As String
Dim strFilePath2 As String
  strFilePath = "d:\mahmoud\data work\backup"
  strFilePath2 = "z:\Blocks_be.accdb"
Dim OldFile, DBwithEXT, DBwithoutEXT, NewFile, CopyMyDB
adad = strFilePath2
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

وشكرا جزيلا لكم على المساعدة الاكثر من رائعة 

  • Like 1
رابط هذا التعليق
شارك

5 ساعات مضت, محمود حاتم احمد said:

عدلت على طريقة الاخ حسام  ووصلت للمطلوب 

 

اعرف ان استاذى الجليل الاستاذ @husamwahab ما قصر بطرح الحل ووضعه على اكمل وجه 

ولكن كان قصدى ارفاق القاعدة له فوائد جمه

1- يسهل عليك انت شخصيا معرفة الحل بالاطلاع على التغيرات الجديدة 

2- يسهل على من يريد مساعدتك فهم طلبك بوضوح والتكيف اولا مع آلية التصميم والتعامل بعد ذلك معه بوضع الحل المناسب بالآلية التى تتماشى معه 

 

  • Like 1
رابط هذا التعليق
شارك

في ٣٠‏/١١‏/٢٠٢٠ at 00:29, ابا جودى said:

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

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

اخي ابا جودي ممكن الخاص الله يحفظك

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information