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

Contribuez Discussion :

Compactage automatique d'une Base protégée [À faire]


Sujet :

Contribuez

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Compactage automatique d'une Base protégée
    Bonjour,

    Je cherche a compacté automatiquement une BD Access avec une ligne de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [PATHMSACCESS]\MSACCESS.EXE [PATHBD]\CLLEData.mdb  /compact
    Le Hic c'est que ma base est protégé par un mot de passe (que je connais )

    Y a-t-il un moyen de compacter même si la base est protégé ???

    En passant la propriété /pwd ne marche pas pour ce genre de protection !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Pour ceux que ça intéresse voici ce que j'ai trouvé sur le sujet...

    On ne peut passer par une ligne de commande il faut donc créer un script qui fait le travail... Voici le code à utiliser dans un fichier [fichier].vbs

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    '******************************************
    ' Script qui compacte une base de données
    ' Ne pas oblier de changer les variables 
    '******************************************
     
    Dim objScript
    Dim objAccess
    Dim strPathToMDB
    Dim strMsg
    dim strPassword
     
    ' initialisation
    strPassword = ""
     
     
    '******** NOTE:  Variable à éditer **********
    '	 
    ' Path du fichier à compacter
        strPathToMDB = "[PATHFICHIER].mdb"
     
    ' Path du fichier Temporaire 
        strTempDB = "[PATHFICHIERTEMP].mdb"
    '
    ' Mot de passe de la BD
        strPassword = "[MOTDEPASSE]"
    '*******************************************
     
     
        ' Pour Access 1997
        'Set objAccess = CreateObject("Access.Application.8")
     
        ' Pour Access 2000
        Set objAccess = CreateObject("Access.Application.9")
     
        ' J'imagine que pour Access 2002 --> Access.Application.10 
     
    	' Gestion de l'erreur base de donné ouverte
    	On Error Resume Next 
     
     
    	if strPassword <> "" then
    		strPassword = ";pwd=" & strPassWord
    		objAccess.DbEngine.CompactDatabase strPathToMDB ,strTempDB, , , strPassword
    	else
    		objAccess.DbEngine.CompactDatabase strPathToMDB ,strTempDB
    	end if
     
    	' s'il y a eu une erreur
    	If Err.Number <> 0 Then 
    		WScript.Quit 
    	End If 
     
    	' Revient au mode d'erreur gérer par Windows
    	On Error Goto 0 
     
     
        Set objScript= CreateObject("Scripting.FileSystemObject")
     
     
        objScript.CopyFile strPathToMDB , strPathToMDB & "z", True
        objScript.CopyFile strTempDB, strPathToMDB, True
        objScript.DeleteFile strTempDB
     
     
     
        ' On vide les objets
        Set objAccess = Nothing
        Set objScript = Nothing
    Pas pire n'est ce pas ??!!

  3. #3
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Résolu?

    Alors, [RESOLU] !!!
    Et mrci d'avoir mis ce code sur le forum pour que d'autres puissent en profiter!

  4. #4
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    Est-ce que quelqu'un peut juste me dire quel est le SQL pour lancer un compactage avec un bouton par exemple ?

  5. #5
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    UP z'avez pas une

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Points : 139
    Points
    139
    Par défaut
    Est-ce que quelqu'un peut juste me dire quel est le SQL pour lancer un compactage avec un bouton par exemple ?
    Du SQL pour lancer un compactage ????? Ca veut dire quoi ???

  7. #7
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Lucifer
    Est-ce que quelqu'un peut juste me dire quel est le SQL pour lancer un compactage avec un bouton par exemple ?
    Du SQL pour lancer un compactage ????? Ca veut dire quoi ???
    ça veut dire que je dis n'importe nawak !

    En fait je veux faire "Outils/Utilitaires.../Compatcer une base de données"
    et ça par l'intermédiaire d'un bouton !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    je dirai que oui c possible, faut connaitre le nom des variables des menus.

    test ca pour te prouver que ca doit etre possible:
    -creer un formulaire (mode creation)
    - ajout un controle "bouton" (click)
    -la une fenetre s'ouvre et te propose differente action a executer
    -choisit une action que tu pourrai trouver dans la barre de menu (en haut d'access)
    -ensuite visualise le code, ca te donnera une petite idee, des possibilités


    norf
    celui qui fait une erreur mais ne la corrige pas en fait une seconde

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Points : 139
    Points
    139
    Par défaut
    Ce qu'il faut savoir c'est aussi qu'à partir d'access 2000, il y a une option de compactage à la fermeture de l'appli dans outils/option onglet Général

  10. #10
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Lucifer
    Ce qu'il faut savoir c'est aussi qu'à partir d'access 2000, il y a une option de compactage à la fermeture de l'appli dans outils/option onglet Général
    ouais je sais je l'avais lu !
    Malheureusement j'ai le 97, je vai sessayer selon ce que dit Norf

  11. #11
    Membre du Club

    Inscrit en
    Juillet 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 34
    Points : 53
    Points
    53
    Par défaut
    MISE A JOUR

    J'ai la solution pour un bouton Compacter pour Access 97.

    Dans un module Standard que tu nommes obligatoirement "Fonctions" (ce nom est repris dans le script) :

    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
    Function CompactEXE() As Boolean
     
    'Compacte la base de données en cours
     
    On Error GoTo Err_CompactEXE
     
    Dim strDbFile As String
    strDbFile = CurrentDb.Name & ".tmp"
     
    If Dir(strDbFile) <> "" Then Kill strDbFile
     
    DBEngine.CreateDatabase strDbFile, dbLangGeneral
    DoCmd.CopyObject strDbFile, , acMacro, "mcrCompact"
     
    'Attention au nom du module !
     
    DoCmd.CopyObject strDbFile, , acModule, "Fonctions"
     
    Shell "MSACCESS.EXE """ & strDbFile & """ /x mcrCompact", _
            vbMinimizedNoFocus
     
    Quitte_CompactEXE:
    Exit Function
     
    Err_CompactEXE:
        MsgBox Err.Description
    Resume Quitte_CompactEXE
     
    End Function
    et

    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
    Public Function Compact()
     
        Dim acApp As Access.Application
        Dim strDbPath As String, strDbFile As String
        Dim strDbFileOld As String
     
        strDbPath = CurrentDb.Name 'Nom complet de la base
        strDbFile = Left(strDbPath, Len(strDbPath) - 4) 'Nom complet de la base sans l'extension ".mdb"
        strDbFileOld = Left(strDbFile, Len(strDbFile) - 4) & ".old" 'Nom complet de la base avec l'extension ".old"
     
        Set acApp = GetObject(strDbFile)
     
        With acApp
            .SysCmd acSysCmdSetStatus, "Compactage en cours..."
            .CloseCurrentDatabase
            DBEngine.CompactDatabase strDbFile, strDbFileOld
            Kill strDbFile
            Name strDbFileOld As strDbFile
            .OpenCurrentDatabase strDbFile
            .SysCmd acSysCmdClearStatus
        End With
        Application.Quit
    End Function
    Pour finir la fameuse macro mcrCompact

    Il faut donc créer une macro contenant juste l'instruction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Action : ExécuterCode
    NomFonction : =Compact()
    Dans ton formulaire, tu fais un joli bouton et tu lui attribues l'évènement sur Clic :

    Succès garanti.

  12. #12
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    Pour savoir si j'ai tout bien fait sachant que cela ne marche pas encore !

    J'ai créé un module et j'ai copié-collé les 2 fonctions du poste précédent et ce module je l'ai appelé "Fonctions"

    Derrière j'ai créé un bouton dont l'évènement "sur clic" est Compactexe()

    La réponse est que Microsoft Jet n'a pas trouvé l'élément "mcrCompact" !!

  13. #13
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    il reste ma solution , je plaisante, celle de mister Gripoil a l'air plus joli tout de meme

    celui qui fait une erreur mais ne la corrige pas en fait une seconde

  14. #14
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par norfelt
    il reste ma solution , je plaisante, celle de mister Gripoil a l'air plus joli tout de meme

    J'ai fais les 2 mais la tienne c'est clair que j'ai pas trouvé le chemin distant pour lancer le compactage !!

    L'autre a l'air très bonne mais pour le moment elle ne fonctionne pas !

  15. #15
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par "nicburger
    J'ai fais les 2 mais la tienne c'est clair que j'ai pas trouvé le chemin distant pour lancer le compactage !!

    L'autre a l'air très bonne mais pour le moment elle ne fonctionne pas !
    yep c'est ce que je te disai , si tu trouve le chemin , la solution est toute basique , mais il faut trouver le chemin, tiens pour la peine je vais chercher aussi, lol. C'est con qu'il n'y ai pas un enregistreur de macro comme sous Excel , la tu aurai tout de suite la solution

    je chercher et je te tiens au courant

    norf
    celui qui fait une erreur mais ne la corrige pas en fait une seconde

  16. #16
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    eh eh

    test moi ca mon ami , apres une bonne recherche , je pense avoir ta solution simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.DoMenuItem acFormBar, 5, 6, 1, acMenuVer70
    si ca marche pas , teste celui la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.DoMenuItem acFormBar, 6, 6, 1, acMenuVer70
    c forcement un des deux

    pour plus d'aide , je vous conseille de faire une recherche sur "DoMenuItem" dans l'aide access

    voili, voilou , c'etait l'astuce norf du jour , lol

    norf
    celui qui fait une erreur mais ne la corrige pas en fait une seconde

  17. #17
    Membre régulier

    Inscrit en
    Novembre 2002
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 73
    Points : 86
    Points
    86
    Par défaut
    c forcement un des deux
    ALORS LA, JE REVE .....


    tu ne peux pas tester avant de donner ce genre de piste ???

  18. #18
    Débutant
    Inscrit en
    Août 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 82
    Points : 61
    Points
    61
    Par défaut
    pas loin mais marche pô !!
    il me dit "ajuster tailler formulaire" en débugant !!

  19. #19
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    non parce que je n'ai pas envie de compacter ma base et que je n'ai pas non plus envie d'en creer une , donc comme tu peux lire si tu regarde bien j'ai de TESTER avant, et que je PENSAIS avoir sa solution

    Citation Envoyé par norfelt
    test moi ca mon ami , apres une bonne recherche , je pense avoir ta solution simple
    et de plus j'ai meme dit pour qu'il n'y ait pas de mal entendu, pour verifier l'info:

    Citation Envoyé par norfelt
    pour plus d'aide , je vous conseille de faire une recherche sur "DoMenuItem" dans l'aide access
    Merci de tout lire , et pas seulement ce que l'on veut lire ou comprendre , sans rancune

    ceci etait un droit de reponse, rien d'autre

    norf
    celui qui fait une erreur mais ne la corrige pas en fait une seconde

  20. #20
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par nicburger
    pas loin mais marche pô !!
    il me dit "ajuster tailler formulaire" en débugant !!
    t'as testé les deux? si oui , look l'aide, au moins tu comprendra ma démarche, and give me the good answer after

    et THOGAL , inadmissible, ma reponse ne marche pas
    (heureusement que j'ai dit que je pensai et que ce n'etais po une certitude , sinon...)

    norf
    celui qui fait une erreur mais ne la corrige pas en fait une seconde

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. compactage automatique d'une base
    Par adriennoob dans le forum VBA Access
    Réponses: 28
    Dernier message: 10/09/2009, 09h30
  2. [Conception] mise à jour automatique d'une base de donné distante
    Par bipbip2006 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/06/2006, 16h45
  3. Modélisation automatique d'une base
    Par calypso dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 20/04/2006, 19h05
  4. Demarrage automatique d'une base sous oracle 9i
    Par tarekos dans le forum Oracle
    Réponses: 4
    Dernier message: 20/03/2006, 17h48
  5. Réponses: 4
    Dernier message: 15/03/2006, 12h33

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