موضوع منقول من المنتدي القديم
الكاتب : فتي الوادي
أنشاء نسخة أحتياطة لقاعدة البيانات CreateBackup
السلام عليكم ورحمة الله وبركاته
وجدت هذه البرنامج في أحد الكتب والبرنامج يقوم - كما يقول المؤلف : بأشناء نسخة أحتياطية عن قاعدة البيانات ( في حالتنا نعالج فقط قاعدة البيانات المرتبطة Data.mdb ) ويسميها بالاسم السابق لها مع إضافة التاريخ الطويل وفق التنسيق Data, dd-mm-yy hh-mm-ss.mdb على سبيل المثال يتم نسخ القاعدة Data.mdb إلى القاعدة Data 19-10-1999 22-15-30.mdb يدل الرقم 30 على الثانية التي تم حفظ القاعدة فيها . ) أ. هـ
قمت أنا بكتابة الشفرة ... ولكن هناك خطأ .. ولم اعرف ما هو .. بحيث يطلع اللون الأحمر ... عند السطر 28
if msgbox("سيتم حفظ قاعدة البيانات الحالية إلى الملف") & txtnewdataname, _
vbmsgboxrtlreading + vbokcancel = vbcancel then
ارجو بعد أطلاع الأخوة ممن لديه الخبرة أفادتنا عن سبب الخطأ ... وما هي المتغيرات التي يجب أن أغيرها لتتناسب مع القاعدة عندي ..
ولكم جزيل الشكر
Public Function createbackup(Optional prompt)
On Error GoTo errlog
'أنشاء نسخة أحتياطية لقاعدة البيانات
Dim txtdbname As String ' اسم ملف قاعدة البيانات
Dim txtconnectstring As String ' نص وصل التطبيق مع قاعدة البيانات
Dim txtnewdatename As String ' اسم قاعدة البيانات الجديد
txtconnectstring = CurrentDb.TableDefs("Accounts").Connect
'
'محرك قواعد البيانات
breakboint 'من المفيد تحديد نقطة التوقف عند السطر التالي
Debug.Print "connect string is: " & txtconnectstring
'نستخلص اسم قاعدة البيانات من الجدول
txtdbname = Mid(txtconnectstring, 11, Len(txtconnectstring) - 10)
Debug.Print "database name is: " & txtdbname
'نصيغ اسم قاعدة بيانات الحفظ الأحتياطي
txtnewdataname = Mid(txtdbname, 1, Len(txtdbname) - 4) & _
Format(Now(), "dd-mm-yyyy hh-nn-ss") & ".mdb"
'نتأكد من عدم وجود القاعدة الجديدة ، ونحذفها إن وجدت
If Dir(txtnewdataname) <> "" Then
Kill txtnewdataname
End If
' prompt الوسيطة قيمة منطقية ووجودها أختياري
' True عندما تأخذ الوسيطة القيمة يتم عرض رسالة تأكيد
If IsMissing(prompt) Then
'الوسيطة غير موجودة تعامل كأن قيمتها false
Else
If prompt Then
if msgbox("سيتم حفظ قاعدة البيانات الحالية إلى الملف") & txtnewdataname, _
vbmsgboxrtlreading + vbokcancel = vbcancel then
MsgBox "فشل الحفظ الأحتياطي"
Exit Function
End If
Else
'بدون رسالة تأكيد
End If
End If
'نضغط قاعدة البانات الحالية إلى الاسم الجديد
DBEngine.CompactDatabase txtdbname, txtnewdataname
MsgBox "تم حفظ نسخة من قاعدة البيانات باسم" & txtnewdataname, _
vbMsgBoxRtlReading
Exit Function
errlog:
handleerror Err.Number, Err.Description
MsgBox "فشلت عملية الحفظ الأحتياطي"
End Functionالكاتب: فتى الوادي بتاريخ: 9/12/2002 8:08:00 PM
------------------------------------------------------------------:
If MsgBox("سيتم حفظ قاعدة البيانات الحالية إلى الملف" & txtnewdataname, _
vbMsgBoxRtlReading + vbOKCancel) = vbCancel Thenيوجد مثال مشابه يؤدي نفس الغرض فى الارشيف ، بعنوان مثال علي النسخ الاحتياطي و التصدير و ربط الجداول
--------------------------------------------------------------------------------
الكاتب: محمد طاهر بتاريخ: 9/13/2002 12:23:20 PM
--------------
لم أجد
السلام عليكم
بحثت في النتدى .. ولكن أغلب الأمثلة لا تعمل ... والصفحة غير موجودة !!
المطلوب هو أنشاء نسخة من البيانات مع إضافة التاريخ والوقت .. كما في الكود .. ولكن الكود السابق فيه أخطاء ..
فهل نجد لديكم الحل ..
وجزاك الله خير الجزاء ...
والسلام عليكم
الكاتب: فتى الوادي بتاريخ: 9/13/2002 4:02:07 PM
-------------------------------------------------------------------
جرب
http://www14.brinkster.com/mtarafa/forms/3in1.zip
و به اضافة التاريخ فقط
الكاتب: محمد طاهر بتاريخ: 9/13/2002 11:50:12 PM
---------------------------------------------------------------
ممتاز ..
الله يرضى عليك يا ابو طاهر ... ويزيدك علماً ...
المثال الأخير ممتاز ... مع أجراء بعض التعديلات ....
جزيت خيراً .. وزوجت بكراً .. والسلام .
--------------------------------------------------------------
الكاتب: فتى الوادي بتاريخ: 9/16/2002 3:10:13 AM
-------------------------------------------------------------------
مع كلمة مرور ؟
حاولت تطبيق المثال المذكور مع قاعدة بيانات محمية بكلمة مرور
وخرجت لي الرسالة :
3031 not avalid password
و لا أدري أين أكتب كلمة المرور .
---------------------------------------------------------------
حارث
الكاتب: حارث بتاريخ: 9/21/2002 9:05:37 PM
-------------------------------------------------------------
كود آخر هل هو صحيح
بدلا من الكود الموجود في المثال وهو :
DBEngine.CompactDatabase fromPath, toPath, DB_LANG_ARABIC
استخدمت الكود :
Dim Fs As Object
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.CopyFile fromPath, toPath, Falseونجح في النسخ ، لكن لدي سؤال :
هل الكود الموجود في المثال أفضل ؟ أم أن هذا الكود يؤدي نفس الغرض ؟
أرجو الإفادة حيث إني مضطر لإنهاء العمل في البرنامج قريبا
--------------------------------------------------------------------------------
حارث
الكاتب: حارث بتاريخ: 9/22/2002 9:38:39 PM
--------------------------
الكود
الكود الاول يقوم بعملية الضغط و الاصلاح مع النقل
و الثاني يبنقل الملف كما هو
و الاول أفضل لتوفير المساحة و لاظهار الاخطاء
و آلم كل حر* سؤال الدهر* أين المسلمونَ??
الكاتب: محمد طاهر بتاريخ: 9/23/2002 2:17:03 AM
---------------------------------------------------------------
كيف أستخدم الكود مع كلمة مرور
تبقى إذن مشكلة كلمة المرور
-----------------------------------------------------------
حارث
الكاتب: حارث بتاريخ: 9/23/2002 3:15:22 AM
--------------------------------------------------------------------------------
كلمة السر
DBEngine.CompactDatabase olddb, newdb, locale, options, password
و تكتب pwd= قبل كلمة السر
";pwd=NewPassword" أي تصبح هكذا DBEngine.CompactDatabase fromPath, toPath, DB_LANG_ARABIC & ";pwd=3031"
هذا ما فهمته من التعليمات و لم أجربه فجرب و أخبرني
--------------------------------------------------------------------------------
الكاتب: محمد طاهر بتاريخ: 9/23/2002 4:32:15 AM
-----------------------------------------------------------------------
جزاك الله كل خير
جربته وأدى الغرض تماما
جزاك الله خير ، وجعلها في موازين حسناتك
--------------------------------------------------------------------------------
حارث
الكاتب: حارث
