بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخوتي في الله حياكم الله وبياكم وللجنة سهل الله خطاكم
وجدت كود لنسخ واسترجاع قاعدة البيانات بأي امتداد تريده سواء 2003 او 2007 فما فوق
وهو يعمل 100% ولله الحمد والمنه ![[صورة مرفقة: 1.gif]](http://www.dev-point.com/vb/imagize/smilies/1.gif)
حسب ما جربته
لكن فيه عيوب وارغب بمعالجتها وهي :-
1- عند استعادة قاعدة البيانات لاتظهر البيانات الجديدة الا بعد اطفاء وتشغيل البرنامج من جديد . كيف اعالج هذه المشكلة ؟؟!!
2- اريد اظهار اسم القاعدة التي قمت بإستدعائها وعرضه في ليبل على عدد من الفورمات في المشروع ويبقى هذا الاسم ما بقيت القاعدة ويتغير بتغير القاعدة ؟؟!!
هذا المشروع
ملاحظة ارفقت كود النسخ والاسترجاع فقط
ارجوا الحل جزاكم الله خير وباركـ الله فيكم
وجعله الله في موازين حسناتكم
جواب السؤال الاول: لابد من وضع اجراء الربط بالبيانات مستقلا وتستطيع مناداته باي حدث.
جواب السؤال الثاني: نفس الجواب الاول ضع اجراء عمومي في موديول او كلاس وقم بمناداته عند كل حاجة.
للمعلومية فقط المثال هو نسخ ملف ايا كان نوعه.
سلام
في كل الاحوال لازم تغلق الاتصال فور الانتها من العمل معه
ولو تستخدم في الاجرا using conn as new oledb.oledbconnection يكون اضمن
لاحظ بعد الاستعاده لازم تحدث الداتاجريد
هذا موديول فيه اكواد النسخوالاسترجاع
كود :
Module mdlBackRestore
Public connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;Jet OLEDB:Database Password=123456790"
Public Sub Backup(Optional ByVal defaultDirectory As String = "")
Try
Using sv As New SaveFileDialog
sv.Title = "عمل نسخة احتياطية"
sv.Filter = "Backup (*.bak)|*.bak"
sv.FileName = "backup" & Now.ToString("-yyyyMMdd-HHmmss") & ".bak"
sv.InitialDirectory = defaultDirectory
If sv.ShowDialog = vbOK Then
Dim dataSource As String = New OleDb.OleDbConnectionStringBuilder(connectionString).DataSource
FileCopy(dataSource, sv.FileName)
MsgBox("تم عمل نسخة احتياطية بنجاح")
End If
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Sub Restore(Optional ByVal defaultDirectory As String = "")
Try
Using op As New OpenFileDialog
op.Title = "استعادة نسخة احتياطية"
op.Filter = "Backup (*.bak)|*.bak"
op.InitialDirectory = defaultDirectory
If op.ShowDialog = vbOK Then
Dim dataSource As String = New OleDb.OleDbConnectionStringBuilder(connectionString).DataSource
FileCopy(op.FileName, dataSource)
Dim db As String = IO.Path.GetFileNameWithoutExtension(op.FileName)
MsgBox("تمت استعادة نسخة احتياطية بنجاح" & vbNewLine & db)
End If
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Module
الكود مجرب
موفقين
(04-08-15, 09:44 AM)سعود كتب : [ -> ]جواب السؤال الاول: لابد من وضع اجراء الربط بالبيانات مستقلا وتستطيع مناداته باي حدث.
جواب السؤال الثاني: نفس الجواب الاول ضع اجراء عمومي في موديول او كلاس وقم بمناداته عند كل حاجة.
للمعلومية فقط المثال هو نسخ ملف ايا كان نوعه.
جزاكـ الله خير اخي
ممكن توضيح اكثر ربي يحفظكـ ويرضى عنكـ
(04-08-15, 01:16 PM)الطالب كتب : [ -> ]سلام
في كل الاحوال لازم تغلق الاتصال فور الانتها من العمل معه
ولو تستخدم في الاجرا using conn as new oledb.oledbconnection يكون اضمن
لاحظ بعد الاستعاده لازم تحدث الداتاجريد
هذا موديول فيه اكواد النسخوالاسترجاع
كود :
Module mdlBackRestore
Public connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;Jet OLEDB:Database Password=123456790"
Public Sub Backup(Optional ByVal defaultDirectory As String = "")
Try
Using sv As New SaveFileDialog
sv.Title = "عمل نسخة احتياطية"
sv.Filter = "Backup (*.bak)|*.bak"
sv.FileName = "backup" & Now.ToString("-yyyyMMdd-HHmmss") & ".bak"
sv.InitialDirectory = defaultDirectory
If sv.ShowDialog = vbOK Then
Dim dataSource As String = New OleDb.OleDbConnectionStringBuilder(connectionString).DataSource
FileCopy(dataSource, sv.FileName)
MsgBox("تم عمل نسخة احتياطية بنجاح")
End If
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Sub Restore(Optional ByVal defaultDirectory As String = "")
Try
Using op As New OpenFileDialog
op.Title = "استعادة نسخة احتياطية"
op.Filter = "Backup (*.bak)|*.bak"
op.InitialDirectory = defaultDirectory
If op.ShowDialog = vbOK Then
Dim dataSource As String = New OleDb.OleDbConnectionStringBuilder(connectionString).DataSource
FileCopy(op.FileName, dataSource)
Dim db As String = IO.Path.GetFileNameWithoutExtension(op.FileName)
MsgBox("تمت استعادة نسخة احتياطية بنجاح" & vbNewLine & db)
End If
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Module
الكود مجرب
موفقين
السلام عليكم ورحمة الله وبركاته
جزاكـ الله خير اخي
طيب اخي هذا كود لعمل نسخة واسترجاعها
طيب وبخصوص عرض الاسم وتحديث البيانات
ولدي استفسار اخر ايهما افضل هذا الكود ام الكود الذي وضعته انا في البداية اقصد بداية الموضوع
جزاكـ الله خير
اخي الكريم مارايك بالفكرة بالمشروع
![[صورة مرفقة: UJnmmp.jpg]](http://im67.gulfup.com/UJnmmp.jpg)
(08-08-15, 07:09 PM)سعود كتب : [ -> ]اخي الكريم مارايك بالفكرة بالمشروع
![[صورة مرفقة: nQIFwh.jpg]](http://im67.gulfup.com/nQIFwh.jpg)
![[صورة مرفقة: UJnmmp.jpg]](http://im67.gulfup.com/UJnmmp.jpg)
جزاكـ الله خير وباركـ الله فيكـ
وجعله الله في موازين حسناتكـ
ربي يحفظكـ تم الذهاب الى الموضوع والرد هناكـ

لقد ذكرت سبب الخطا الذي نبهتني له وكتبت الحل هناك.