IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] [Access] Compacter une base de donnée


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [VB6] [Access] Compacter une base de donnée
    J'aimerais savoir si c'est possible de faire compacter une base de donnée acces en utilisant du code visual basic et si oui , comment utiliser et quel est ce code???

    Merci de votre aide :
    Martin

  2. #2
    Invité
    Invité(e)
    Par défaut
    Dans des pages ASP j'utilise ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <% 
        Option Explicit 
        Const THEJETVAR= 4 
     
        function Squish&#40;thePathDB, boolIs97&#41; 
        Dim fso, Engine, strThePathDB 
        strThePathDB = left&#40;thePathDB,instrrev&#40;ThePathDB,"\"&#41;&#41; 
        Set fso = CreateObject&#40;"Scripting.FileSystemObject"&#41; 
     
        if fso.FileExists&#40;thePathDB&#41; Then 
        Set Engine = CreateObject&#40;"JRO.JetEngine"&#41; 
     
        if boolIs97 = "True" Then 
        Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & thePathDB, _ 
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strThePathDB & "temp.mdb;"
    ' _     & "Jet OLEDB&#58;Engine Type=" & JET_3X 
        Else 
        Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & thePathDB, _ 
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strThePathDB & "temp.mdb" 
        End if 
        fso.CopyFile strThePathDB & "temp.mdb",thePathDB 
        fso.DeleteFile&#40;strThePathDB & "temp.mdb"&#41; 
        Set fso = nothing 
        Set Engine = nothing 
        Squish = "Your database, " & thePathDB & ", has been Compacted" & vbCrLf 
        Else 
        Squish = "The database name or path has Not been found. Try Again" & vbCrLf 
        End if 
     
        End function 
        %> 
        <HTML><HEAD><TITLE>Compact Database</TITLE></HEAD><BODY> 
     
        <H2 align="center"> Compacting Dealer database</H2> 
        <P align="center"> 
        <FORM action=compact.asp> 
        Enter relative path To the database, including database name.<BR><BR> 
        <INPUT type="text" name="thePathDB"> 
        <BR><BR> 
        <INPUT type="checkbox" name="boolIs97" value="True"> Check if Access 97 database 
        <BR><I> &#40;default is Access 2000&#41;</I><BR><BR> 
        <INPUT type="submit"> 
        <FORM> 
        <BR><BR> 
        <% 
        Dim thePathDB,boolIs97 
        thePathDB = request&#40;"thePathDB"&#41; 
        boolIs97 = request&#40;"boolIs97"&#41; 
     
        if thePathDB <> "" Then 
        'thePathDB = server.mappath&#40;thePathDB&#41; 
        response.write&#40;Squish&#40;thePathDB,boolIs97&#41;&#41; 
        End if 
        %> 
        </P></BODY></HTML>
    et ça marche. Ne connaissant pas VB je te laisse le soin et la joie de piocher ce qu'il te faut.

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    depuis une page html !!!
    joli

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ca n'est pas de moi, je l'ai siphonné je ne sais plus où, mais ça marche bien.

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Ça me donne fortement envie de me mettre à l'asp.

  6. #6
    J M
    J M est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Sous VB6, j'utilise la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp
    A+

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Oui, ce qui donne un truc dans le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Function CompactMDB&#40;MDBname As String&#41; 
          Dim accApp As New Access.Application 
          Dim rep As Boolean, pds As Long 
          Dim fs, f, nf As String, tmpFile As String 
          On Error Resume Next 
              Set fs = CreateObject&#40;"Scripting.FileSystemObject"&#41; 
              ' Créer un nom temporaire 
              tmpFile = fs.GetAbsolutePathName&#40;fs.gettempname&#41; 
              ' &#40;PathNameOnly retourne le chemin du fichier&#41; 
              tmpFile = PathNameOnly&#40;fs.GetAbsolutePathName&#40;MDBname&#41;&#41; & "\" & fs.getbasename&#40;tmpFile&#41; & ".mdb" 
              'Compacter la base de données 
              'rep = accApp.CompactRepair&#40;SourceFile&#58;=MDBname, DestinationFile&#58;=tmpFile&#41; 
              rep = accApp.DBEngine.CompactDatabase&#40;SrcName&#58;=MDBname, DestName&#58;=tmpFile&#41; 
              accApp.Quit 
              If rep And Err = 0 Then 
                  ' Remplacer 
                  Kill MDBname 
                  Name tmpFile As MDBname 
                  MsgBox "La base de données a été compactée avec succès." & vbCrLf & "&#40;Sa taille actuelle &#58; " & Format&#40;FileLen&#40;MDBname&#41;, "### ### ###"&#41; & " octets &#41;" 
              Else 
                  ' Détruire le tmp 
                  If fs.FileExists&#40;tmpFile&#41; Then Kill tmpFile 
                  MsgBox "La base de données n'a pas été compactée avec succès." & vbCrLf & "&#40;Sa taille actuelle &#58; " & Format&#40;FileLen&#40;MDBname&#41;, "### ### ###"&#41; & " octets &#41;", , "DESOLE ..." 
              End If 
              Set fs = Nothing 
              accApp = Nothing 
      End Function
    J'ai l'impression de commencer à gagater à force de répéter

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup tout le monde, J'ai adopter la maniere de l'ASP et ca fonctionne parfaitement !

    Merci beaucoup!
    Martin

  9. #9
    Invité
    Invité(e)
    Par défaut
    Attention, ce programme que j'ai trouvé ici:
    http://www.developpez.net/forums/vie...ight=compacter

    modifie la version du fichier Access en fonction des composants MDAC installés: je me suis retrouvé avec une base Access 97 impossible à ouvrir, certainement convertie en Access 2000.

  10. #10
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    pour éviter ce problème, il suffit d'utiliser une constante de version

    Constante Description
    dbVersion10 Crée une base de données utilisant le format de fichier 1.0 du moteur de base de données Microsoft Jet durant le compactage.
    dbVersion11 Crée une base de données utilisant le format de fichier 1.1 du moteur de base de données Microsoft Jet durant le compactage.
    dbVersion20 Crée une base de données utilisant le format de fichier 2.0 du moteur de base de données Microsoft Jet durant le compactage.
    dbVersion30 Crée une base de données utilisant le format de fichier 3.0 (compatible avec la version 3.5) du moteur de base de données Microsoft Jet durant le compactage.

  11. #11
    Invité
    Invité(e)
    Par défaut
    A quel endroit tu place et utilise cette constante?

  12. #12
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    La syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.CompactDatabase olddb, newdb, locale, options, password
    C'est options qu'il faut renseigner
    Tout est dans l'aide des référence DAO 3.6

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Comment compacter une base de données Access ?
    Par xVINCEx dans le forum Contribuez
    Réponses: 6
    Dernier message: 05/06/2008, 18h35
  2. [ACCESS] Compacter une base de données
    Par aityahia dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2007, 10h33
  3. Compacter une base de données Firebird
    Par defluc dans le forum Débuter
    Réponses: 1
    Dernier message: 01/03/2007, 09h20
  4. compacter une base de donnée
    Par tpdm dans le forum Access
    Réponses: 1
    Dernier message: 14/10/2005, 11h30
  5. Compacter une base de donnée
    Par Floyd dans le forum Access
    Réponses: 4
    Dernier message: 13/10/2005, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo