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

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

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

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

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

علما بأنني أستخدم مكتبة الـ ADO

#2

-09

الاخ الفاضل :: YasserSayed2003

هناك فرق كبير بين الـ dao و الـ ado

ففى الـ dao يمكنك ان تقم بعملية " ضغط و اصلاح قاعدة البيانات " من خلال نفس الـ dll

و لكن لكى تقم بعمل هذا فى الـ ado يجب ان تقم بارفاق الملف الاتى هذا الملف :

Microsoft Jet and Replication Objects 2.5 Library

بعد هذا تقم باستخدام الكود الاتى :

strFileName = "C:\WINDOWS\SYSTEM\gcdb.mdb"
strBackup = "C:\WINDOWS\SYSTEM\backup.mdb"
CompactDB strFileName, strBackup

و ترفق المديول الخاص بالعملية ( بهذ المديول يمكنك من تغير كلمة السر و اشاء اخرى و لك التجربة )

Option Explicit
' Set a reference to the Microsoft Jet and Replication Objects 2.1

Public Function EncryptDB(ByRef SourceDB As String, _
                          ByRef DestDB As String, _
                          ByRef Pswd As String) As Boolean
On Error GoTo ErrHandler

    Dim JRO         As JRO.JetEngine
    Dim SourceCnn   As String
    Dim DestCnn     As String
     
    Set JRO = New JRO.JetEngine
    
    ' Kill the backup if it currently exists
    If Dir(DestDB) <> vbNullString Then Kill DestDB
    
    ' Build the SourceConnection ConnectionString
    SourceCnn = "Provider=Microsoft.Jet.OLEDB.4.0" & _
                ";Data Source=" & SourceDB & _
                ";Jet OLEDB:Database Password=" & Pswd
    
    ' Build the DestConnection ConnectionString
    DestCnn = "Provider=Microsoft.Jet.OLEDB.4.0" & _
              ";Data Source=" & DestDB & _
              ";Jet OLEDB:Database Password=" & Pswd & _
              ";Jet OLEDB:Engine Type=5" & _
              ";Jet OLEDB:Encrypt Database=True"
        
    ' Create a compacted and encrypted replica
    JRO.CompactDatabase SourceCnn, DestCnn
        
    ' Kill the original and rename the replica
    Kill SourceDB
    Name DestDB As SourceDB
    EncryptDB = True
    
ErrHandler:
    Set JRO = Nothing
    
    If Err.Number <> 0 Then
        EncryptDB = False
        Err.Raise Err.Number, Err.Source, Err.Description
    End If
End Function

Public Function CompactDB(ByRef SourceDB As String, _
                          ByRef DestDB As String, _
                          Optional ByRef Pswd As String = "") As Boolean
On Error GoTo ErrHandler

    Dim JRO         As JRO.JetEngine
    Dim SourceCnn   As String
    Dim DestCnn     As String
     
    Set JRO = New JRO.JetEngine
    
    ' Kill the backup file if it currently exists
    If Dir(DestDB) <> vbNullString Then Kill DestDB
     
    ' Build the SourceConnection ConnectionString
    SourceCnn = "Provider=Microsoft.Jet.OLEDB.4.0" & _
                ";Data Source=" & SourceDB & _
                ";Jet OLEDB:Database Password=" & Pswd
    
    ' Build the DestConnection ConnectionString
    DestCnn = "Provider=Microsoft.Jet.OLEDB.4.0" & _
              ";Data Source=" & DestDB & _
              ";Jet OLEDB:Engine Type=5" & _
              ";Jet OLEDB:Database Password=" & Pswd
    
    ' Create a compacted replica
    JRO.CompactDatabase SourceCnn, DestCnn
    
    ' Kill the original and rename the replica
    Kill SourceDB
    Name DestDB As SourceDB
    CompactDB = True
    
ErrHandler:
    Set JRO = Nothing
    
    If Err.Number <> 0 Then
        CompactDB = False
        Err.Raise Err.Number, Err.Source, Err.Description
    End If
End Function

Public Function ChangePassword(ByRef SourceDB As String, _
                               ByRef DestDB As String, _
                               ByRef OldPswd As String, _
                               ByRef NewPswd As String) As Boolean
On Error GoTo ErrHandler

    Dim JRO         As JRO.JetEngine
    Dim SourceCnn   As String
    Dim DestCnn     As String
     
    Set JRO = New JRO.JetEngine
    
    ' Kill the backup file if it currently exists
    If Dir(DestDB) <> vbNullString Then Kill DestDB
     
    ' Build the SourceConnection ConnectionString
    SourceCnn = "Provider=Microsoft.Jet.OLEDB.4.0" & _
                ";Data Source=" & SourceDB & _
                ";Jet OLEDB:Database Password=" & OldPswd
     
    ' Build the DestConnection ConnectionString
    DestCnn = "Provider=Microsoft.Jet.OLEDB.4.0" & _
              ";Data Source=" & DestDB & _
              ";Jet OLEDB:Engine Type=5" & _
              ";Jet OLEDB:Database Password=" & NewPswd
    
    ' Create replica with new password
    JRO.CompactDatabase SourceCnn, DestCnn
    
    ' Kill the original and rename the replica
    Kill SourceDB
    Name DestDB As SourceDB
    ChangePassword = True
    
ErrHandler:
    Set JRO = Nothing
    
    If Err.Number <> 0 Then
        ChangePassword = False
        Err.Raise Err.Number, Err.Source, Err.Description
    End If
End Function

Public Function AddBackslash(strPath As String) As String
'Add backslash to the AppPath string
On Error Resume Next
    
    If Right$(strPath, 1) <> "\" Then
        AddBackslash = strPath & "\"
    Else
        AddBackslash = strPath
    End If
    
End Function

و الله الموفق

تم تعديل هذه المشاركة بواسطة codefinder في 11 يناير 2005 في 13:26

ارجوا مساعدتى للعمل كمبرمج اوراكل باى شركة خبرتى 1 سنه و ربنا الموفق

خبرى 6 سنوات فى فيجوال بيزك 6و ASP

#3

شرحا جميل ووافي اخي codefinder

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#4

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

سأقوم بتجريب البرنامج و أخبرك بالنتيجة

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

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