Solved

Trying to compact access 2000 mdb in vb6 using ADO

Posted on 2008-06-10
10
997 Views
Last Modified: 2008-09-08
I am attempting to add code to existing VB6 program to Compact (and Repair) an Access 2000 MDB using tthe Microsoft jet and Replication Objects library 2.6

I am getting an error message at the statement below jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;" stating that the argument iCompactDatabase s not optional.  It is probably in the syntax that I just cook booked code from an internet site and only changed the data base names.  I just can't see where the problem is and was hoping that someone more familiar with this task could help.

Morris

-----------------------------------------------------------------------------------------------------------------------
Private Sub mnuCompactMDB_Click()

   Dim strSource As String

   Dim strDestination As String

   

   Dim Response As Integer

   Response = MsgBox("Compact ARSSL.mdb ?", vbYesNo)

   If Response = vbNo Then Exit Sub

   MsgBox "NOTE - all other users must be completely out of the program for this operation"

   If Len(Dir$(App.Path & "\data\arssl.ldb")) > 0 Then

       MsgBox ("Database is in use")

       Exit Sub

     Else

       strSource = App.Path & "\data\arssl_data.mdb"

       strDestination = App.Path & "\data\arssl_data_new.mdb"

       Dim jro As jro.JetEngine

       Set jro = New jro.JetEngine

       jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;" _

        & "Data Source= & strSource" _

        & "Provider=Microsoft.Jet.OLEDB.4.0;" _

        & "Data Source= & strDestination" _

        & ";Jet OLEDB:Engine Type=5"

        

        Kill strSource

        Name strDestination As strSource

        Set jro = Nothing

     

   End If

End Sub

Open in new window

0
Comment
Question by:morrisbo
  • 5
  • 2
10 Comments
 
LVL 13

Expert Comment

by:game-master
ID: 21749414

try this one...
very easy to understand and works fine..


http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20255768.htm
0
 

Author Comment

by:morrisbo
ID: 21749446
game-master

When I click on the link I get the message that the web site cannot be found.

Morris
0
 
LVL 13

Expert Comment

by:game-master
ID: 21749472

Oh yes...

i just opened this earlier..
im sorry...

i will going to check it again

game-master
0
Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

 
LVL 13

Expert Comment

by:game-master
ID: 21749486


try this one..


     Public Sub CompactAccessDataBase(dbPath As String, NewPath As String)
         Dim acc As Object
         Set acc = CreateObject("Access.Application")
         acc.CompactRepair dbPath, NewPath
         Set acc = Nothing
     End Sub
     
     Sub test()
         CompactAccessDataBase "C:\YourDatabase.mdb", "C:\YourDatabase_NEW.mdb"
     End Sub
0
 
LVL 13

Expert Comment

by:game-master
ID: 21749516


this one also...

Add as reference to DAO 3.51 or later to your project and
use DBEngine.Compact database here's an example.


Sub CompactDatabaseX()

   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

End Sub


i hope this will give idea...


game-master
0
 

Accepted Solution

by:
morrisbo earned 0 total points
ID: 21756716
game-master

I wanted to stay with ADO

Finally made it work.  I will post the code snipet for anyone else needing to perform a similar task.

Thanks for your help.  Really appreciate it.

Morris
Private Sub mnuCompactMDB_Click()

   

   If Len(Dir$(App.Path & "\data\arssl.ldb")) > 0 Then

       MsgBox ("Database is in use")

       Exit Sub

   End If

   

   Dim JRO As JRO.JetEngine

   Set JRO = New JRO.JetEngine
 

   Dim DB_sour As String

   Dim DB_dest As String

   Dim sSource As String

   Dim sDestination As String

  

   sSource = App.Path & "\data\ars_data.mdb"

   sDestination = App.Path & "\data\ars_data_temp.mdb"

    

   Dim fso As New FileSystemObject

   If fso.FileExists(sDestination) = True Then

       Kill sDestination

   End If

  

   DB_sour = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _

      & sSource

  

   DB_dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _

      & sDestination & " ;Jet OLEDB:Engine Type=5"

  

   JRO.CompactDatabase DB_sour, DB_dest

   

   Kill sSource

   Name sDestination As sSource

   Set JRO = Nothing
 

End Sub

Open in new window

0
 
LVL 13

Expert Comment

by:game-master
ID: 21756773


Morris


im glad u solved your problem...

game-master
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

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
I originally created this report in Crystal Reports 2008 where there is an option to underlay sections. I initially came across the problem in Access Reports where I was unable to run my border lines down through the entire page as I was using the P…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…

911 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

23 Experts available now in Live!

Get 1:1 Help Now