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

كيف أريد أن أعمل ضغط وإصلاح لقاعدة البيانات من خلال البرنامج

بدأه جواد في 4 فبراير 2012 · 6 رد · 449 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني الأحباء

كيف أريد أن أعمل ضغط وإصلاح لقاعدة البيانات من خلال البرنامج

يعني لا اريد ان افتح قاعدة البيانات واعمل اصلاح وضغط

اريد من خلال نافذة البرنامج أضغط على إصلاح وهو يضغطها

وأريد أن يعمل على جميع قواعد بيانات اكسيس سواء 2003 او 2007 او 2010

علماً انه يوجد على قاعدة البيانات باسورد

وشكرا لكم

تم تعديل هذه المشاركة بواسطة جواد في 4 فبراير 2012 في 15:39

#2

السلام عليكم ...

اولاً قم بإدراج المكتبة Microsoft Office 12.0 Access database engine Object لمشروعك

( Project > Reference > Microsoft Office 12.0 Access database engine Object )

ثم استخدم الكود التالي :

Dim dbPath As String, TmpdbPath As String, dbPass As String

dbPath = App.Path & "\db.accdb"     		' مسار قاعدة البيانات
TmpdbPath = App.Path & "\Tmpdb.accdb"   	' مسار قاعدة البيانات بعد الضغط
dbPass = "123"                          	' باسورد قاعدة البيانات

If Dir(ATmpdbPath) <> "" Then
	Kill TmpdbPath
End If

' ضغط قاعدة البيانات
DBEngine.CompactDatabase dbPath, TmpdbPath, , , ";pwd=" & dbPass

Kill dbPath
Name TmpdbPath As TmpdbPath

طبعاً قم بتغيير مسار قاعدة البيانات والباسورد

مع مراعاة غلق قاعدة البيانات او اي اتصال بها قبل عمل الضغط

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#3

شكراً لك أخي محمد مصطفي غريب

بارك الله فيك

شكرا لك

جاري تجربتها

#4

اخي الكريم ظهرت لي الرسالة هذه

1111144444494486717193976.jpg

وهذ الكود اللي استخدمته

Dim dbPath As String, TmpdbPath As String, dbPass As String

dbPath = Text1.Text             
TmpdbPath = Text1.Text          
dbPass = "224466"         

If Dir(ATmpdbPath) <> "" Then
        Kill TmpdbPath
End If


DBEngine.CompactDatabase dbPath, TmpdbPath, , , ";pwd=" & dbPass

Kill dbPath
Name TmpdbPath As TmpdbPath
#5
اقتباس
dbPath = Text1.Text         	
TmpdbPath = Text1.Text          
dbPass = "224466"

المسار الاول هو مسار وجود قاعدة البيانات, انما المسار الثاني هو مسار قاعدة البيانات بعد الضغط, فكود الضغط يضغط قاعدة البيانات ويحفظها في مكان آخر, لذا يجب تغيير المسار الثاني , على سبيل المثال نضيف له كلمة Tmp فيكون الكود

dbPath = Text1.Text         	
TmpdbPath = "Tmp" & Text1.Text          
dbPass = "224466"

تم تعديل هذه المشاركة بواسطة محمد مصطفي غريب في 5 فبراير 2012 في 15:06

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#6

وايضاً يوجد حرف زائد في الكود ... تم وضع الكود في Function مستقل لتسهيل العملية

الكود بعد التعديل :

Private Sub Command1_Click()
    CompactDatabase Text1.text, Text2.text
End Sub


Public Sub CompactDatabase(dbPath As String, dbPassword As String)

Dim dbPass As String

On Error GoTo ErrHandle

TmpdbPath = dbPath & "_Tmp"

If Dir(TmpdbPath) <> "" Then
    Kill TmpdbPath
End If

' ضغط قاعدة البيانات
DBEngine.CompactDatabase dbPath, TmpdbPath, , , ";pwd=" & dbPassword

Kill dbPath
Name TmpdbPath As dbPath

MsgBox "Done ...", vbInformation, "Database Compacting"
Exit Sub

ErrHandle:
MsgBox "Error while compacting, make sure that the database is closed", vbExclamation, "Database Compacting"

End Sub

يوضع في Text1 مسار قاعدة البيانات وفي Text2 باسورد قاعدة البيانات ..

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#7

ألف شكر لك اخي محمد مصطفي غريب

الأن زبط

ألف شكر لك

الله يقويك ويزيدك من علمه

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…