Avatar billede jbjerre Nybegynder
07. november 2001 - 00:19 Der er 6 kommentarer og
2 løsninger

Komprimering af Access 2000 fra VB

Hej Alle

Jeg mangler et stykke kode, der kan komprimerer en Access 2000 database fra Visual Basic.

Grundet tidspres ;-) er jeg lidt gavmild med point.

Hilsen JBjerre.
Avatar billede a1a1 Novice
07. november 2001 - 00:39 #1
Set Engine = CreateObject(\"DAO.DBEngine.35\")
  Engine.CompactDatabase \"path\\database.mdb\", \"path\\compacted_database.mdb\"
Avatar billede a1a1 Novice
07. november 2001 - 00:39 #2
Eller
Set Engine = CreateObject(\"JRO.JetEngine\")
  Engine.CompactDatabase \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path\\database.mdb\", _
    \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path\\compacted_database.mdb\"

fra:
http://www.pstruh.cz/tips/detpg_CompactMDB.htm
Avatar billede jbjerre Nybegynder
07. november 2001 - 15:55 #3
Hej a1

Jeg har tilpasset din kode til mit project.
Men !!! Koden opretter en ny database, og jeg har brug for at den eksisterende bliver komprimeret.
Kan du hjælpe mig med dette.

Hilsen JBjerre
Avatar billede kedde65 Praktikant
08. november 2001 - 21:50 #4
jBjerre: Du kan aldrig komprimere en Access 2000 database uden at gemme i en ny fil. Men hvis du bruger den overnstående kode og omdøber filerne fra vb, så har du løst dit problem. Du kan bruge fileSystemObject til at omdøbe filerne.

Kedde
Avatar billede kedde65 Praktikant
08. november 2001 - 21:57 #5
du kan hvis du sætter en reference til microsoft scripting runtime og bruger flg. kode kan du rename filer.

Dim obj As FileSystemObject

Private Sub Command1_Click()
    Set obj = New FileSystemObject
    Dim f As File
    Set f = obj.GetFile(\"c:\\huj.txt\")
   
    f.Move \"c:\\huji.txt\"
    Set f = Nothing
    Set obj = Nothing
End Sub
Avatar billede jbjerre Nybegynder
08. november 2001 - 22:50 #6
Hej a1 og kedde.

Jeg har valgt nedenstående løsning,
kontakt mig venligst hvis der er anvent ukorekte metoder i denne.

Hilsen JBjerre
_____________________________________

Public Sub CompactAndEncrypt()
    Dim strPath As String, temp As String
    Dim je As Object
   
\'**********
\'Henter databaseplacering fra data.ini
\'og indsætter denne i strPath.
\'**********

    If Dir(App.Path & \"\\Data.ini\") <> \"\" Then
        Open (App.Path & \"\\Data.ini\") For Input As #1
        Input #1, temp
            frmSti.txtSti.Text = temp
            strPath = temp
        Close #1
    End If



   
   
\'**********
\'Opretter ny komprimerer databasen ØvRegBackendNY
\'**********

Set je = CreateObject(\"JRO.JetEngine\")
je.CompactDatabase \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & strPath & \"\", _
\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & strPath & \"TEMP\" & \"\"

\'**********
\'Omdøber og sletter database
\'**********

If Dir(strPath & \"OLD\") <> \"\" Then Kill strPath & \"OLD\"
If Dir(strPath) <> \"\" Then Name strPath As strPath & \"OLD\"
If Dir(strPath & \"TEMP\") <> \"\" Then Name strPath & \"TEMP\" As strPath

End Sub
Avatar billede a1a1 Novice
09. november 2001 - 10:17 #7
umidelbart ser det da fint ud :)
Avatar billede jbjerre Nybegynder
09. november 2001 - 15:46 #8
tak a1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester