Bonjour,
Sur mon serveur, j'aimerais faire une t=E2che planifi=E9e pour compacter
toutes les bases de donn=E9es du disque O:\
Mais la difficult=E9 vient du fait que de nouvelles bases de donn=E9es
Access se rajoute chaque jour, et je ne voudrait pas cr=E9er une t=E2che
planifi=E9e =E0 chaque base nouvellement cr=E9=E9e.
Qq'un aurait-il d=E9j=E0 programmm=E9 un petit exe permettant de faire
cela (ou qqun aurait-il une id=E9e de la syntaxe VB pour faire ceci ?)
En vous remerciant
Yvan
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Dan
a écrit dans le message de news:
Bonjour, Sur mon serveur, j'aimerais faire une tâche planifiée pour compacter toutes les bases de données du disque O: Mais la difficulté vient du fait que de nouvelles bases de données Access se rajoute chaque jour, et je ne voudrait pas créer une tâche planifiée à chaque base nouvellement créée. Qq'un aurait-il déjà programmmé un petit exe permettant de faire cela (ou qqun aurait-il une idée de la syntaxe VB pour faire ceci ?) En vous remerciant Yvan
Salut Yvan,
Pourquoi pas une appli recensant tes bases, avec une procédure déclenchée sur le timer d'un form ouvert au démarrage, qui parcourt la liste des bases et les compacte les unes après les autres (le timer permet de ne compacter qu'une seule base à la fois, pour ménager le serveur). L'appli peut même générer une ligne de commentaire par base : "compactée avec succès le 13/06/2006" Dans les tâches planifiées, il suffit ensuite d'ouvrir l'appli. A+ Dan
<blancmunier@yahoo.fr> a écrit dans le message de news:
1150115711.752041.217610@f6g2000cwb.googlegroups.com...
Bonjour,
Sur mon serveur, j'aimerais faire une tâche planifiée pour compacter
toutes les bases de données du disque O:
Mais la difficulté vient du fait que de nouvelles bases de données
Access se rajoute chaque jour, et je ne voudrait pas créer une tâche
planifiée à chaque base nouvellement créée.
Qq'un aurait-il déjà programmmé un petit exe permettant de faire
cela (ou qqun aurait-il une idée de la syntaxe VB pour faire ceci ?)
En vous remerciant
Yvan
Salut Yvan,
Pourquoi pas une appli recensant tes bases, avec une procédure déclenchée
sur le timer d'un form ouvert au démarrage, qui parcourt la liste des bases
et les compacte les unes après les autres (le timer permet de ne compacter
qu'une seule base à la fois, pour ménager le serveur).
L'appli peut même générer une ligne de commentaire par base : "compactée
avec succès le 13/06/2006"
Dans les tâches planifiées, il suffit ensuite d'ouvrir l'appli.
A+ Dan
Bonjour, Sur mon serveur, j'aimerais faire une tâche planifiée pour compacter toutes les bases de données du disque O: Mais la difficulté vient du fait que de nouvelles bases de données Access se rajoute chaque jour, et je ne voudrait pas créer une tâche planifiée à chaque base nouvellement créée. Qq'un aurait-il déjà programmmé un petit exe permettant de faire cela (ou qqun aurait-il une idée de la syntaxe VB pour faire ceci ?) En vous remerciant Yvan
Salut Yvan,
Pourquoi pas une appli recensant tes bases, avec une procédure déclenchée sur le timer d'un form ouvert au démarrage, qui parcourt la liste des bases et les compacte les unes après les autres (le timer permet de ne compacter qu'une seule base à la fois, pour ménager le serveur). L'appli peut même générer une ligne de commentaire par base : "compactée avec succès le 13/06/2006" Dans les tâches planifiées, il suffit ensuite d'ouvrir l'appli. A+ Dan
blancmunier
ah, je croyais qu'on ne pouvait mettre que des exe ds une tache planifiee. Je vais essayer de bidouiller ds ce sens. Merci
ah, je croyais qu'on ne pouvait mettre que des exe ds une tache
planifiee.
Je vais essayer de bidouiller ds ce sens.
Merci
C'est bien un Exe qu'il faut mettre : c:program filesmsaccess.exe.... suivi du nom de la base et des paramètres de la ligne de commandes... A+ Dan
Bonjour
Je ne sais pas si ça peut aider, mais la procédure ci-dessous vient de me permettre de compacter 87 bases access d'un dossier en moins de 2 minutes. Bon, c'est du code à améliorer, notamment si on veut ignorer les messages d'erreur.
Option Compare Database Option Explicit
Public Function fCompactageBases() Dim Dossier As String Dossier = "E:Mes documentsDBAccess2K" On Error Resume Next Dim intFile As Integer intFile = 0 With Application.FileSearch .LookIn = Dossier .FileName = "*.mdb" If .Execute > 0 Then For intFile = 1 To .FoundFiles.Count If fCanOpenExclusive(.FoundFiles(intFile)) = True Then DoEvents 'ExecCmd "Msaccess.exe " & Chr$(34) & .FoundFiles(intFile) & Chr$(34) & " /compact" Shell "Msaccess.exe " & Chr$(34) & .FoundFiles(intFile) & Chr$(34) & " /compact", vbHide DoEvents End If Next intFile End If End With End Function
Public Function fCanOpenExclusive(ByVal varPath As String) As Boolean On Error Resume Next Const FileInUse As Long = 3045 Const FileOpenedExclusively As Long = 3356 Dim dbe As PrivDBEngine Dim dbs As Dao.Database Set dbe = New PrivDBEngine Set dbs = dbe(0).OpenDatabase(varPath, True) If dbs Is Nothing Then If (Err.Number = FileInUse Or _ Err.Number = FileOpenedExclusively) Then fCanOpenExclusive = False Else MsgBox "Erreur: " & Err.Number & ": " & vbCrLf & Err.Description End If Else fCanOpenExclusive = True dbs.Close End If Set dbs = Nothing Set dbe = Nothing End Function
Une fois finalisé, il n'y aurait plus qu'à planifier l'exécution de ce code dans d'une base dédiée qui se chargera de compacter ses copines.. a+ -- Arnaud --------------------------------------------- infos, conseils et liens : http://www.mpfa.info ---------------------------------------------
a écrit dans le message de news: Bonjour, Sur mon serveur, j'aimerais faire une tâche planifiée pour compacter toutes les bases de données du disque O: Mais la difficulté vient du fait que de nouvelles bases de données Access se rajoute chaque jour, et je ne voudrait pas créer une tâche planifiée à chaque base nouvellement créée. Qq'un aurait-il déjà programmmé un petit exe permettant de faire cela (ou qqun aurait-il une idée de la syntaxe VB pour faire ceci ?) En vous remerciant Yvan
Bonjour
Je ne sais pas si ça peut aider, mais la procédure ci-dessous vient de me permettre de compacter 87 bases access d'un dossier en
moins de 2 minutes.
Bon, c'est du code à améliorer, notamment si on veut ignorer les messages d'erreur.
Option Compare Database
Option Explicit
Public Function fCompactageBases()
Dim Dossier As String
Dossier = "E:Mes documentsDBAccess2K"
On Error Resume Next
Dim intFile As Integer
intFile = 0
With Application.FileSearch
.LookIn = Dossier
.FileName = "*.mdb"
If .Execute > 0 Then
For intFile = 1 To .FoundFiles.Count
If fCanOpenExclusive(.FoundFiles(intFile)) = True Then
DoEvents
'ExecCmd "Msaccess.exe " & Chr$(34) & .FoundFiles(intFile) & Chr$(34) & " /compact"
Shell "Msaccess.exe " & Chr$(34) & .FoundFiles(intFile) & Chr$(34) & " /compact", vbHide
DoEvents
End If
Next intFile
End If
End With
End Function
Public Function fCanOpenExclusive(ByVal varPath As String) As Boolean
On Error Resume Next
Const FileInUse As Long = 3045
Const FileOpenedExclusively As Long = 3356
Dim dbe As PrivDBEngine
Dim dbs As Dao.Database
Set dbe = New PrivDBEngine
Set dbs = dbe(0).OpenDatabase(varPath, True)
If dbs Is Nothing Then
If (Err.Number = FileInUse Or _
Err.Number = FileOpenedExclusively) Then
fCanOpenExclusive = False
Else
MsgBox "Erreur: " & Err.Number & ": " & vbCrLf & Err.Description
End If
Else
fCanOpenExclusive = True
dbs.Close
End If
Set dbs = Nothing
Set dbe = Nothing
End Function
Une fois finalisé, il n'y aurait plus qu'à planifier l'exécution de ce code dans d'une base dédiée qui se chargera de compacter ses
copines..
a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------
<blancmunier@yahoo.fr> a écrit dans le message de news: 1150115711.752041.217610@f6g2000cwb.googlegroups.com...
Bonjour,
Sur mon serveur, j'aimerais faire une tâche planifiée pour compacter
toutes les bases de données du disque O:
Mais la difficulté vient du fait que de nouvelles bases de données
Access se rajoute chaque jour, et je ne voudrait pas créer une tâche
planifiée à chaque base nouvellement créée.
Qq'un aurait-il déjà programmmé un petit exe permettant de faire
cela (ou qqun aurait-il une idée de la syntaxe VB pour faire ceci ?)
En vous remerciant
Yvan
Je ne sais pas si ça peut aider, mais la procédure ci-dessous vient de me permettre de compacter 87 bases access d'un dossier en moins de 2 minutes. Bon, c'est du code à améliorer, notamment si on veut ignorer les messages d'erreur.
Option Compare Database Option Explicit
Public Function fCompactageBases() Dim Dossier As String Dossier = "E:Mes documentsDBAccess2K" On Error Resume Next Dim intFile As Integer intFile = 0 With Application.FileSearch .LookIn = Dossier .FileName = "*.mdb" If .Execute > 0 Then For intFile = 1 To .FoundFiles.Count If fCanOpenExclusive(.FoundFiles(intFile)) = True Then DoEvents 'ExecCmd "Msaccess.exe " & Chr$(34) & .FoundFiles(intFile) & Chr$(34) & " /compact" Shell "Msaccess.exe " & Chr$(34) & .FoundFiles(intFile) & Chr$(34) & " /compact", vbHide DoEvents End If Next intFile End If End With End Function
Public Function fCanOpenExclusive(ByVal varPath As String) As Boolean On Error Resume Next Const FileInUse As Long = 3045 Const FileOpenedExclusively As Long = 3356 Dim dbe As PrivDBEngine Dim dbs As Dao.Database Set dbe = New PrivDBEngine Set dbs = dbe(0).OpenDatabase(varPath, True) If dbs Is Nothing Then If (Err.Number = FileInUse Or _ Err.Number = FileOpenedExclusively) Then fCanOpenExclusive = False Else MsgBox "Erreur: " & Err.Number & ": " & vbCrLf & Err.Description End If Else fCanOpenExclusive = True dbs.Close End If Set dbs = Nothing Set dbe = Nothing End Function
Une fois finalisé, il n'y aurait plus qu'à planifier l'exécution de ce code dans d'une base dédiée qui se chargera de compacter ses copines.. a+ -- Arnaud --------------------------------------------- infos, conseils et liens : http://www.mpfa.info ---------------------------------------------
a écrit dans le message de news: Bonjour, Sur mon serveur, j'aimerais faire une tâche planifiée pour compacter toutes les bases de données du disque O: Mais la difficulté vient du fait que de nouvelles bases de données Access se rajoute chaque jour, et je ne voudrait pas créer une tâche planifiée à chaque base nouvellement créée. Qq'un aurait-il déjà programmmé un petit exe permettant de faire cela (ou qqun aurait-il une idée de la syntaxe VB pour faire ceci ?) En vous remerciant Yvan