Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2003, 17h27   #1
Invité régulier
 
Inscription : mars 2002
Messages : 18
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 18
Points : 6
Points : 6
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 :
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 !
matgel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2003, 21h23   #2
Invité régulier
 
Inscription : mars 2002
Messages : 18
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 18
Points : 6
Points : 6
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 :
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 ??!!
matgel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2003, 22h40   #3
Membre Expert
 
Avatar de Frank
 
Homme Frank
Chef de projet Informatique
Inscription : avril 2002
Messages : 1 036
Détails du profil
Informations personnelles :
Nom : Homme Frank
Âge : 44
Localisation : France, Oise (Picardie)

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

Informations forums :
Inscription : avril 2002
Messages : 1 036
Points : 1 187
Points : 1 187
Résolu?

Alors, [RESOLU] !!!
Et mrci d'avoir mis ce code sur le forum pour que d'autres puissent en profiter!
__________________
Frank
Les règles!
FAQ Delphi
FAQ Access
Frank est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2003, 14h38   #4
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
Est-ce que quelqu'un peut juste me dire quel est le SQL pour lancer un compactage avec un bouton par exemple ?
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2003, 17h06   #5
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
UP z'avez pas une
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2003, 17h12   #6
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 28
Points : 30
Points : 30
Citation:
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 ???
Lucifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2003, 17h36   #7
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
Citation:
Envoyé par Lucifer
Citation:
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 !
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 10h27   #8
Membre à l'essai
 
Inscription : août 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 35
Points : 24
Points : 24
Envoyer un message via MSN à norfelt
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
norfelt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 10h30   #9
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 28
Points : 30
Points : 30
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
Lucifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 13h07   #10
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
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
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 14h45   #11
Futur Membre du Club
 
Inscription : juillet 2003
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 32
Points : 17
Points : 17
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 :
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 :
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 :
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.
gripoil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 16h48   #12
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
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" !!
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 16h57   #13
Membre à l'essai
 
Inscription : août 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 35
Points : 24
Points : 24
Envoyer un message via MSN à norfelt
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
norfelt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 17h02   #14
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
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 !
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 17h07   #15
Membre à l'essai
 
Inscription : août 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 35
Points : 24
Points : 24
Envoyer un message via MSN à norfelt
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
norfelt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 17h43   #16
Membre à l'essai
 
Inscription : août 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 35
Points : 24
Points : 24
Envoyer un message via MSN à norfelt
eh eh

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

Code :
DoCmd.DoMenuItem acFormBar, 5, 6, 1, acMenuVer70
si ca marche pas , teste celui la:

Code :
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
norfelt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 17h50   #17
Membre régulier
 
Inscription : novembre 2002
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 73
Points : 73
Points : 73
Citation:
c forcement un des deux
ALORS LA, JE REVE .....


tu ne peux pas tester avant de donner ce genre de piste ???
THOGAL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 17h53   #18
Débutant
 
Inscription : août 2003
Messages : 81
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 81
Points : 33
Points : 33
pas loin mais marche pô !!
il me dit "ajuster tailler formulaire" en débugant !!
nicburger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 17h58   #19
Membre à l'essai
 
Inscription : août 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 35
Points : 24
Points : 24
Envoyer un message via MSN à norfelt
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
norfelt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2003, 18h00   #20
Membre à l'essai
 
Inscription : août 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 35
Points : 24
Points : 24
Envoyer un message via MSN à norfelt
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
norfelt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h58.


 
 
 
 
Partenaires

Hébergement Web