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

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

مغلق
بدأه osos.bg في 29 يناير 2003 · 11 رد · 1,525 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوانى السلام عليكم

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

ولكن عند تشغيل الكود تظهر لى هذه الرسالة

you attempted to open a database was already opned exclussively by user Admin on machine OSAMA please try to open it when the database is available

فما معنى هذه الرسالة؟ وكيف اتخطاها؟

وهل هناك طريقة معينة لعمل نسخة احتياطية من البرنامج ام ماذا؟

ارجو وضع الكود او مثال للايضاح

#2

السلام عليكم

اخي العزيز معنى الرسالةباختصار شديد هو وجود شخص ما يعمل على قاعدة البيانات واتوقع إن البرنامج هو إلى شاغل قاعدة بياناتك .

الحل :

هو قم بغلق قاعدة البيانات قبل إن تعمل النسخ الإحتياطي عن طريق Close مثال adoPrimaryRS.Close على فكرة الغلق يتم من خلال البرنامج .

بعد ذلك قم بتشغيل الكود الخاص بالنسخ.

جرب عساه ينجح .

#3

لو سمحتم ممكن أعرف كود النسخة الاحتياطية وكيفية عمله

#4

السلام عليكم

في مايلي كود للنسخ الإحتياطي وكود لإصلاح الاخطاء في قاعدة البيانات مثل الموجود في Access تماما بستخدام DAO .

ملاحظة هامة يجب إن لا يكون هناك اي اتصال بقاعدة البيانات .

للنسخ الإحتياطي

DBEngine.CompactDatabase App.Path & "OldDatabase.MDB", _

App.Path & "NewDatabase.MDB", dbLangGeneral

لإصلاح قاعدة البيانات

DBEngine.RepairDatabase App.Path & "YourDatabase.mdb"

سلامي للجميع

#5

وهذ هو كود اخر من اخ فاضل جزاه الله خيرا

Private Sub Command1_Click()

ms1 = MsgBox("سيتم تنظيم وضغط قاعدة البيانات قبل النسخ سيستغرق ذلك بعض الوقت", 524288 + 52, "رسالة أنذار ببدء النسخ")

If ms1 = 7 Then

m = MsgBox("تم إيقاف عملية النسخ الإحتياطى", 524288 + 16, "تم إيقاف عملية النسخ")

Exit Sub

End If

If ms1 = 6 Then

ExportCopy.Enabled = False

Command1.Enabled = False

Command2.Enabled = False

Command3.Enabled = False

'1 - تغيير مؤشر الفأرة

MousePointer = vbHourglass

Call Form_Load

MyPath = App.Path + ""

MyDBF = MyPath + "db1.mdb"

' التاكد من عدم وجود الملف المؤقت و حدفه في حالة وجوده

If Dir(MyPath + "Temp.Mdb", vbHidden) <> "" Then Kill MyPath + "Temp.Mdb"

' ضغط أصلاح ملف قاعدة البيانات و وضعه في الملف المؤقت

CompactDatabase MyDBF, MyPath + "Temp.Mdb", dbLangArabic, , ";pwd=" & "osama"

' حدف ملف قاعدة البيانات

If Dir(MyDBF, vbHidden) <> "" Then Kill MyDBF

' استبدال اسم الملف المؤقت الى اسم ملف قاعدة البيانات

Name MyPath + "Temp.Mdb" As MyDBF

Rem نسخ الملف الجديد بعد ضغطه وإصلاحه

Dim SourceFile, DestinationFile

SourceFile = (App.Path & "db1.mdb") ' Define source file name.

Rem الحصول على رقم أخر ملف

If File1.ListCount > 0 Then

NF = Mid(tabel.TextMatrix(tabel.Rows - 1, 0), 5, Len(tabel.TextMatrix(tabel.Rows - 1, 0)) - 8)

DestinationFile = "d:نسخ أحتياطى لبرنامج النظارات" & "db1" & NF + 1 & ".mdb" ' Define target file name.

FileCopy SourceFile, DestinationFile ' Copy source to target.

Else

DestinationFile = "d:نسخ أحتياطى لبرنامج النظارات" & "db1" & 1 & ".mdb" ' Define target file name.

FileCopy SourceFile, DestinationFile ' Copy source to target.

End If

'3 - اعادة المؤشر للحالة الطبيعية

MousePointer = vbNormal

ExportCopy.Enabled = True

Command1.Enabled = True

Command2.Enabled = True

Command3.Enabled = True

MsgBox "تمت عملية تنظيم وضغط وعمل نسخ إحتياطى من ملف قاعدة البيانات", 524288 + 64, "تمت العملية بنجاح"

End If

Rem هنا نجد الملفات المتواجده فى المجلد لتحميلها فى القائمة

File1.Path = "d:نسخ أحتياطى لبرنامج النظارات"

File1.Refresh

tabel.Rows = File1.ListCount + 1

For T = 0 To File1.ListCount - 1

tabel.TextMatrix(T + 1, 0) = File1.List(T)

tabel.TextMatrix(T + 1, 1) = FileLen(File1.Path & "" & File1.List(T)) & " bytes"

tabel.TextMatrix(T + 1, 2) = FileDateTime(File1.Path & "" & File1.List(T))

Next T

Rem ترتيب الملفات من القديم للحديث

tabel.Col = 2

tabel.Sort = 5

File1.Refresh

End Sub

Private Sub Command3_Click()

Unload Me

End Sub

Private Sub Form_Load()

tabel.Col = 0: tabel.Row = 0

tabel.Text = "أسم الملف "

tabel.Col = 1: tabel.Row = 0

tabel.Text = " حجم الملف "

tabel.Col = 2: tabel.Row = 0

tabel.Text = "تاريخ ووقت أنشاء الملف "

tabel.ColWidth(0) = 2300

tabel.ColWidth(1) = 2490

tabel.ColWidth(2) = 2550

Rem عمل المجلد الذى سيتم أنشاء الملفات بداخله

If Dir$("d:نسخ أحتياطى لبرنامج النظارات", vbDirectory) = "" Then

MkDir "d:نسخ أحتياطى لبرنامج النظارات"

Else

GoTo mk:

Exit Sub

End If

If Dir$("d:نسخ أحتياطى لبرنامج النظارات", vbDirectory) = "" Then MkDir "d:نسخ أحتياطى لبرنامج العقارات"

mk:

Rem هنا نجد الملفات المتواجده فى المجلد

File1.Path = "d:نسخ أحتياطى لبرنامج النظارات"

File1.Refresh

tabel.Rows = File1.ListCount + 1

For T = 0 To File1.ListCount - 1

tabel.TextMatrix(T + 1, 0) = File1.List(T)

tabel.TextMatrix(T + 1, 1) = FileLen(File1.Path & "" & File1.List(T)) & " bytes"

tabel.TextMatrix(T + 1, 2) = FileDateTime(File1.Path & "" & File1.List(T))

Next T

Rem ترتيب الملفات من القديم للحديث

tabel.Col = 2

tabel.Sort = 5

If File1.ListCount = 0 Then tabel.Rows = 9

End Sub

Private Sub Form_Unload(cancel As Integer)

Set Cn = New ADODB.Connection

Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=osama; Data Source=" & App.Path & "db1.mdb"

Unload Me

frmMain.Enabled = True

End Sub

المشكلة عندى انه عند السطر CompactDatabase

تظهر لى رسالة الخطأ فماذا افعل؟

اخى visitor اين الخطا هنا؟

واين اكتب كود الضغط والاستعادة؟ وجزاك الله خيرا

#6

السلام عليكم

اخي الكريم osos.bg

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

على فكرة CompactDatabase لا تعمل مع ADODB لانها خاصه ب DAO .

تحقق من وجود مكتبة DAO في مشروعك . وذلك بالتالي .

اذهب إلى القائمة واختر Projcet ثم References إن وجدت Microsoft DAO 3.51 Object Lilbrery في القائمة التي سوفا تظهر موضوع عليها صح فمعنى هذا إنها مضافه إلى مشروعك وإن لا تجدها قم بالبحث عنها وبعد ذلك اخترها وجرب تشغيل البرنامج .

بالنسبه لإستعادة قاعدة البيانات فهي عملية تغيير اسم قاعدة البيانات لا غير .

بالتوفيق .

#7

حسنا اخى هذا هو البرنامج

معذرة ان كان به بعض الاخطاء البرمجية فانا لازلت مبتدئ

ومن احب ان يساعدنى فيه فجزاه الله خيرا

optics.zip

#8

السلام عليكم

جرب اخي الكود المعدل :

وابلغني عن اي خطاء يحدث معك ، تحياتي

optics01.zip

#9

السلام عليكم

عفوا اخي البرنامج السابق توجد فيه بعض الاخطاء بسبب تسرعي .

تفضل هذا النسخه المعدله وإن شاء الله يكون افضل من السابق وفيه ستحصل على مبتغاك والمعذرة .

بالتوفيق

optics02.zip

#10

جزاك الله خيرا اخى

ساجرب واخبرك بالنتائج

#11

العفو وانا في الانتظار

#12

والله لا ادرى كيف اشكرك

ولا املك الا ان اقول لك جزاك الله كل خير

وهذه منى (gift) وتلك ايضا (f)

تقبل تحياتى:)

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

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