Solved

How to Compact the Access MDB file through Coding ??

Posted on 2001-06-07
5
396 Views
Last Modified: 2008-02-01
I want to how i can compact the database (Access MDB)through visual basic coding ?
0
Comment
Question by:krs_rama
  • 3
5 Comments
 
LVL 49

Accepted Solution

by:
Ryan Chong earned 100 total points
ID: 6163508
Hi,

You can also use the CompactDatabase method of the Microsoft Jet and Replication Objects (JRO) 2.1 JetEngine

object to encrypt or decrypt a database. To use the JRO JetEngine object, you must set a reference to

the Microsoft Jet and Replication Objects 2.1 object library. When you use the CompactDatabase method,

you can't save the compacted (and optionally encrypted) database to the same name as the original database.

The CompactDatabase method takes two arguments to specify the source database and the destination database:

SourceConnection and DestConnection. Both the SourceConnection and DestConnection arguments take the

form of connection strings. Within the connection strings, you specify various connection properties

to determine how the source database is opened and how the destination database is compacted. At a minimum,

you must use the Data Source property in each connection string to specify the path and name of the

database. Additionally, to encrypt the database, you must include the Jet OLEDB:Encrypt Database property

in the connection string for the DestConnection argument. The following procedure uses these connection

properties to encrypt the database specified by the strSourceDB argument to the path and name specified

by the strDestDB argument:

Function EncryptDb(strSourceDB As String, _
                   strDestDB As String) As String
 Dim jetEngine          As JRO.JetEngine
 Dim strSourceConnect   As String
 Dim strDestConnect     As String

 ' Build connection strings for SourceConnection and
 ' DestConnection arguments.
 strSourceConnect = "Data Source=" & strSourceDB
 strDestConnect = "Data Source=" & strDestDB & ";" & _
                   "Jet OLEDB:Encrypt Database=True"

 Set jetEngine = New JRO.JetEngine

 ' Compact and encrypt the database specified by strSourceDB
 ' to the name and path specified by strDestDB.
 jetEngine.CompactDatabase strSourceConnect, strDestConnect

 Set jetEngine = Nothing
End Function

0
 
LVL 49

Expert Comment

by:Ryan Chong
ID: 6163532
0
 
LVL 3

Expert Comment

by:jrspano
ID: 6163538
if you are using dao you can do it directly with the dbengine from msdn:


    Dim dbsNorthwind As Database

    Set dbsNorthwind = OpenDatabase("Northwind.mdb")

    ' Show the properties of the original database.
    With dbsNorthwind
        Debug.Print .Name & ", version " & .Version
        Debug.Print "  CollatingOrder = " & .CollatingOrder
        .Close
    End With

    ' Make sure there isn't already a file with the
    ' name of the compacted database.
    If Dir("NwindKorean.mdb") <> "" Then _
        Kill "NwindKorean.mdb"

    ' This statement creates a compact version of the
    ' Northwind database that uses a Korean language
    ' collating order.
    DBEngine.CompactDatabase "Northwind.mdb", _
        "NwindKorean.mdb", dbLangKorean

    Set dbsNorthwind = OpenDatabase("NwindKorean.mdb")

    ' Show the properties of the compacted database.
    With dbsNorthwind
        Debug.Print .Name & ", version " & .Version
        Debug.Print "  CollatingOrder = " & .CollatingOrder
        .Close
    End With

of course you want to leave off the korean collating order
here is an example that changes the db version


    Dim dbsNorthwind As Database
    Dim prpLoop As Property

    Set dbsNorthwind = OpenDatabase("Nwind11.mdb")

    ' Show the properties of the original database.
    With dbsNorthwind
        Debug.Print .Name & ", version " & .Version
        Debug.Print "  CollatingOrder = " & .CollatingOrder
        .Close
    End With

    ' Make sure there isn't already a file with the
    ' name of the compacted database.
    If Dir("Nwind20.mdb") <> "" Then _
        Kill "Nwind20.mdb"

    ' This statement creates a compact and encrypted
    ' Microsoft Jet 2.0 version of a Microsoft Jet version
    ' 1.1 database.
    DBEngine.CompactDatabase "Nwind11.mdb", _
        "Nwind20.mdb", , dbEncrypt + dbVersion20

    Set dbsNorthwind = OpenDatabase("Nwind20.mdb")

    ' Show the properties of the compacted database.
    With dbsNorthwind
        Debug.Print .Name & ", version " & .Version
        For Each prpLoop In .Properties
            On Error Resume Next
            If prpLoop <> "" Then Debug.Print "  " & _
                prpLoop.Name & " = " & prpLoop
            On Error GoTo 0
        Next prpLoop
        .Close
    End With


0
 
LVL 49

Expert Comment

by:Ryan Chong
ID: 6163545
Here is a visual of VB5/Access 97:
http://www.mvps.org/access/modules/mdl0020.htm
0
 

Author Comment

by:krs_rama
ID: 6194051
I Accept this answer !!1
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Help in WHSCRIPT 9 47
Use Multiple Forms 4 49
Computer crashes, following error message in event manager 5 145
vb6 connector to SQL Server 2 34
Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

862 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now