"Bricoleur" a écrit dans le message de
news:bum97k$e8t$
y a-t-il moyen de lancer un compactage de la base par une procédure vb
lors
de la sortie de la base ? (sous access97)
Trouvé sur ce forum :
Compacter la base de données sans quitter Access (Avec la version Access
97
seulement)
Ajouter la fonction suivante :
Public Function CompacterBaseDonnées()
' Envoie les touches pour exécuter Outils, Utilitaires de bases de
données,
Compacter une base de données.
SendKeys "%OUM"
End Function
Vous pouvez appeler la fonction à partir d'un formulaire ou à partir d'un
menu généré avec le gestionnaire de menu principal.
Je viens d'essayer, ça a l'air de fonctionner depuis une macro Test.
"Bricoleur" <_pas_jneron@wanadoo.fr> a écrit dans le message de
news:bum97k$e8t$1@news-reader4.wanadoo.fr...
y a-t-il moyen de lancer un compactage de la base par une procédure vb
lors
de la sortie de la base ? (sous access97)
Trouvé sur ce forum :
Compacter la base de données sans quitter Access (Avec la version Access
97
seulement)
Ajouter la fonction suivante :
Public Function CompacterBaseDonnées()
' Envoie les touches pour exécuter Outils, Utilitaires de bases de
données,
Compacter une base de données.
SendKeys "%OUM"
End Function
Vous pouvez appeler la fonction à partir d'un formulaire ou à partir d'un
menu généré avec le gestionnaire de menu principal.
Je viens d'essayer, ça a l'air de fonctionner depuis une macro Test.
"Bricoleur" a écrit dans le message de
news:bum97k$e8t$
y a-t-il moyen de lancer un compactage de la base par une procédure vb
lors
de la sortie de la base ? (sous access97)
Trouvé sur ce forum :
Compacter la base de données sans quitter Access (Avec la version Access
97
seulement)
Ajouter la fonction suivante :
Public Function CompacterBaseDonnées()
' Envoie les touches pour exécuter Outils, Utilitaires de bases de
données,
Compacter une base de données.
SendKeys "%OUM"
End Function
Vous pouvez appeler la fonction à partir d'un formulaire ou à partir d'un
menu généré avec le gestionnaire de menu principal.
Je viens d'essayer, ça a l'air de fonctionner depuis une macro Test.
Merci
Ca a l'air de marcher.
J'ai mis la fonction à l'entrée du premier formulaire, en examinant la
valeur d'une variable (NbOuvertures) que j'incrémente à chaque ouverture
et tout est ok. Si la base n'est pas dispo (un autre utilisateur en
ligne),
j'ai un msg d'erreur non bloquant.
Donc MERCI
Question pour les pros: çà me parait trop simple. Y a-t-il un risque
quelconque sous une autre version d'Access, ou si les menus sont
configurés
autrement. Suis-je sur que la barre de bouton à laquelle je fais
référence
sera toujours disponible, quelquesoit la configuration locale du poste ?
Merci
Ca a l'air de marcher.
J'ai mis la fonction à l'entrée du premier formulaire, en examinant la
valeur d'une variable (NbOuvertures) que j'incrémente à chaque ouverture
et tout est ok. Si la base n'est pas dispo (un autre utilisateur en
ligne),
j'ai un msg d'erreur non bloquant.
Donc MERCI
Question pour les pros: çà me parait trop simple. Y a-t-il un risque
quelconque sous une autre version d'Access, ou si les menus sont
configurés
autrement. Suis-je sur que la barre de bouton à laquelle je fais
référence
sera toujours disponible, quelquesoit la configuration locale du poste ?
Merci
Ca a l'air de marcher.
J'ai mis la fonction à l'entrée du premier formulaire, en examinant la
valeur d'une variable (NbOuvertures) que j'incrémente à chaque ouverture
et tout est ok. Si la base n'est pas dispo (un autre utilisateur en
ligne),
j'ai un msg d'erreur non bloquant.
Donc MERCI
Question pour les pros: çà me parait trop simple. Y a-t-il un risque
quelconque sous une autre version d'Access, ou si les menus sont
configurés
autrement. Suis-je sur que la barre de bouton à laquelle je fais
référence
sera toujours disponible, quelquesoit la configuration locale du poste ?
Bonsoir.
Quand on lance un sendkeys c'est pour simuler des frappes de clavier. Donc
cette simulation ne peut être réalisée qu'à l'intérieur d'un module ou
d'un
formulaire. simuler le clavier par la fonction envoitouches d'une macro
nécessite l'exécution de cette macro à partir du code vba, sinon elle est
d'une inutilité remarquable. Utiliser le clavier pour exécuter une macro
qui
va simuler le clavier ne peut pas entrer dans une logique access. Donc il
faut reconnaître que le compactage de la base par l'envoi de touches
necessite l'utilisation du code vba. Il est bien connu également que le
compactage ne peut pas avoir lieu si du code vb est en exécution. si le
compactage est lancé par un sendkeys à partir d'un module ou d'un
formulaire, il y aura obligatoirement du code en exécution, ce qui va
provoquer une erreur access.(timer proscrit). Si on enlève la macro qui ne
sert à rien car elle nécessite l'utilisation du clavier et si on enlève la
possibilité par le code , il ne doit pas rester grand chose à explorer.
Il reste toutefois, une procédure complexe (que je n'ai jamais homologuée)
qui fonctionnerait mais qui reste sensible dans son utilisation; je peux
fournir le source aux demandeurs.
C'était une simple remarque de ma part.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Bricoleur" a écrit dans le message de
news:bumiu3$l75$Merci
Ca a l'air de marcher.
J'ai mis la fonction à l'entrée du premier formulaire, en examinant la
valeur d'une variable (NbOuvertures) que j'incrémente à chaque ouverture
et tout est ok. Si la base n'est pas dispo (un autre utilisateur en
ligne),j'ai un msg d'erreur non bloquant.
Donc MERCI
Question pour les pros: çà me parait trop simple. Y a-t-il un risque
quelconque sous une autre version d'Access, ou si les menus sont
configurésautrement. Suis-je sur que la barre de bouton à laquelle je fais
référencesera toujours disponible, quelquesoit la configuration locale du poste ?
Bonsoir.
Quand on lance un sendkeys c'est pour simuler des frappes de clavier. Donc
cette simulation ne peut être réalisée qu'à l'intérieur d'un module ou
d'un
formulaire. simuler le clavier par la fonction envoitouches d'une macro
nécessite l'exécution de cette macro à partir du code vba, sinon elle est
d'une inutilité remarquable. Utiliser le clavier pour exécuter une macro
qui
va simuler le clavier ne peut pas entrer dans une logique access. Donc il
faut reconnaître que le compactage de la base par l'envoi de touches
necessite l'utilisation du code vba. Il est bien connu également que le
compactage ne peut pas avoir lieu si du code vb est en exécution. si le
compactage est lancé par un sendkeys à partir d'un module ou d'un
formulaire, il y aura obligatoirement du code en exécution, ce qui va
provoquer une erreur access.(timer proscrit). Si on enlève la macro qui ne
sert à rien car elle nécessite l'utilisation du clavier et si on enlève la
possibilité par le code , il ne doit pas rester grand chose à explorer.
Il reste toutefois, une procédure complexe (que je n'ai jamais homologuée)
qui fonctionnerait mais qui reste sensible dans son utilisation; je peux
fournir le source aux demandeurs.
C'était une simple remarque de ma part.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Bricoleur" <_pas_jneron@wanadoo.fr> a écrit dans le message de
news:bumiu3$l75$1@news-reader3.wanadoo.fr...
Merci
Ca a l'air de marcher.
J'ai mis la fonction à l'entrée du premier formulaire, en examinant la
valeur d'une variable (NbOuvertures) que j'incrémente à chaque ouverture
et tout est ok. Si la base n'est pas dispo (un autre utilisateur en
ligne),
j'ai un msg d'erreur non bloquant.
Donc MERCI
Question pour les pros: çà me parait trop simple. Y a-t-il un risque
quelconque sous une autre version d'Access, ou si les menus sont
configurés
autrement. Suis-je sur que la barre de bouton à laquelle je fais
référence
sera toujours disponible, quelquesoit la configuration locale du poste ?
Bonsoir.
Quand on lance un sendkeys c'est pour simuler des frappes de clavier. Donc
cette simulation ne peut être réalisée qu'à l'intérieur d'un module ou
d'un
formulaire. simuler le clavier par la fonction envoitouches d'une macro
nécessite l'exécution de cette macro à partir du code vba, sinon elle est
d'une inutilité remarquable. Utiliser le clavier pour exécuter une macro
qui
va simuler le clavier ne peut pas entrer dans une logique access. Donc il
faut reconnaître que le compactage de la base par l'envoi de touches
necessite l'utilisation du code vba. Il est bien connu également que le
compactage ne peut pas avoir lieu si du code vb est en exécution. si le
compactage est lancé par un sendkeys à partir d'un module ou d'un
formulaire, il y aura obligatoirement du code en exécution, ce qui va
provoquer une erreur access.(timer proscrit). Si on enlève la macro qui ne
sert à rien car elle nécessite l'utilisation du clavier et si on enlève la
possibilité par le code , il ne doit pas rester grand chose à explorer.
Il reste toutefois, une procédure complexe (que je n'ai jamais homologuée)
qui fonctionnerait mais qui reste sensible dans son utilisation; je peux
fournir le source aux demandeurs.
C'était une simple remarque de ma part.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Bricoleur" a écrit dans le message de
news:bumiu3$l75$Merci
Ca a l'air de marcher.
J'ai mis la fonction à l'entrée du premier formulaire, en examinant la
valeur d'une variable (NbOuvertures) que j'incrémente à chaque ouverture
et tout est ok. Si la base n'est pas dispo (un autre utilisateur en
ligne),j'ai un msg d'erreur non bloquant.
Donc MERCI
Question pour les pros: çà me parait trop simple. Y a-t-il un risque
quelconque sous une autre version d'Access, ou si les menus sont
configurésautrement. Suis-je sur que la barre de bouton à laquelle je fais
référencesera toujours disponible, quelquesoit la configuration locale du poste ?
Bonsoir
J'ai mis ce qui suit dans mon code et ça marche (en mdb, je n'ai pas testé
le mde)
Private Sub Form_Open(Cancel As Integer)
Req = "UPDATE param SET param.NbOuvertures = [nbouvertures]+1;"
Lance Req ' fonction qui exécute la requète Req
VarNbOuvertures = DLookup("NbOuvertures", "Param")
' teste si besoin de compacter
If VarNbOuvertures > 20 Then
Req = "UPDATE param SET param.NbOuvertures = 0;"
Lance Req
SendKeys "%m" ' j'ai une barre de boutons personalisés avec un
bouton Co%mpacter
End If
end sub
Alors où est le problème ?
Bonsoir
J'ai mis ce qui suit dans mon code et ça marche (en mdb, je n'ai pas testé
le mde)
Private Sub Form_Open(Cancel As Integer)
Req = "UPDATE param SET param.NbOuvertures = [nbouvertures]+1;"
Lance Req ' fonction qui exécute la requète Req
VarNbOuvertures = DLookup("NbOuvertures", "Param")
' teste si besoin de compacter
If VarNbOuvertures > 20 Then
Req = "UPDATE param SET param.NbOuvertures = 0;"
Lance Req
SendKeys "%m" ' j'ai une barre de boutons personalisés avec un
bouton Co%mpacter
End If
end sub
Alors où est le problème ?
Bonsoir
J'ai mis ce qui suit dans mon code et ça marche (en mdb, je n'ai pas testé
le mde)
Private Sub Form_Open(Cancel As Integer)
Req = "UPDATE param SET param.NbOuvertures = [nbouvertures]+1;"
Lance Req ' fonction qui exécute la requète Req
VarNbOuvertures = DLookup("NbOuvertures", "Param")
' teste si besoin de compacter
If VarNbOuvertures > 20 Then
Req = "UPDATE param SET param.NbOuvertures = 0;"
Lance Req
SendKeys "%m" ' j'ai une barre de boutons personalisés avec un
bouton Co%mpacter
End If
end sub
Alors où est le problème ?
le problème est que tu as encore du code en exécution derrière le sendkeys
quand tu exécutes le compactage et que dans certains cas le compactage ne
sera pas fait. je ne dis pas que ça ne marche pas mais il y a le risque
que
ça ne fonctionne pas un jour. si tu as un objet mal fermé par exemple ou
un
simple timer . si ça marche sous ton système il n'y a pas de problème.
mais
avant de lancer ton compactage il faut arrêter tous les objets en cours.
il te reste à résoudre les multi-utilisateurs et dans ce cas tu auras du
code en exécution.
il te faudra tester aussi sous runtime.
le tout mélangé sera quand même plus lourd que quelques lignes.
si tu arrives à tout résoudre et pour tous les niveaux access, tu seras
d'accord, je pense, pour en faire profiter les contributeurs de ce groupe.
nous t'en remercions par avance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
le problème est que tu as encore du code en exécution derrière le sendkeys
quand tu exécutes le compactage et que dans certains cas le compactage ne
sera pas fait. je ne dis pas que ça ne marche pas mais il y a le risque
que
ça ne fonctionne pas un jour. si tu as un objet mal fermé par exemple ou
un
simple timer . si ça marche sous ton système il n'y a pas de problème.
mais
avant de lancer ton compactage il faut arrêter tous les objets en cours.
il te reste à résoudre les multi-utilisateurs et dans ce cas tu auras du
code en exécution.
il te faudra tester aussi sous runtime.
le tout mélangé sera quand même plus lourd que quelques lignes.
si tu arrives à tout résoudre et pour tous les niveaux access, tu seras
d'accord, je pense, pour en faire profiter les contributeurs de ce groupe.
nous t'en remercions par avance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
le problème est que tu as encore du code en exécution derrière le sendkeys
quand tu exécutes le compactage et que dans certains cas le compactage ne
sera pas fait. je ne dis pas que ça ne marche pas mais il y a le risque
que
ça ne fonctionne pas un jour. si tu as un objet mal fermé par exemple ou
un
simple timer . si ça marche sous ton système il n'y a pas de problème.
mais
avant de lancer ton compactage il faut arrêter tous les objets en cours.
il te reste à résoudre les multi-utilisateurs et dans ce cas tu auras du
code en exécution.
il te faudra tester aussi sous runtime.
le tout mélangé sera quand même plus lourd que quelques lignes.
si tu arrives à tout résoudre et pour tous les niveaux access, tu seras
d'accord, je pense, pour en faire profiter les contributeurs de ce groupe.
nous t'en remercions par avance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
Si il n'y a qu'un utilisateur, pas de pb car mon formulaire est celui qui
est ouvert en premier. et il n'y a rien d'autre d'actif.
Si il y a plusieurs utilisateurs, cela ne marche pas, mais ne semble pas
bloquant. Il suffirait d'ailleurs que je sache combien d'utilisateurs sont
connectés (je ne sais pas faire) et ne pas lancer la procédure si il y en
a
d'autres. Dans ce cas le premier qui se connecterais seul (ce qui arrivera
nécessairement) lancerait alors le compactage.
Par contre, je ne sais pas ce qui se passe sous d'autres versions en
particulier runtime.
Bricoleur
Si il n'y a qu'un utilisateur, pas de pb car mon formulaire est celui qui
est ouvert en premier. et il n'y a rien d'autre d'actif.
Si il y a plusieurs utilisateurs, cela ne marche pas, mais ne semble pas
bloquant. Il suffirait d'ailleurs que je sache combien d'utilisateurs sont
connectés (je ne sais pas faire) et ne pas lancer la procédure si il y en
a
d'autres. Dans ce cas le premier qui se connecterais seul (ce qui arrivera
nécessairement) lancerait alors le compactage.
Par contre, je ne sais pas ce qui se passe sous d'autres versions en
particulier runtime.
Bricoleur
Si il n'y a qu'un utilisateur, pas de pb car mon formulaire est celui qui
est ouvert en premier. et il n'y a rien d'autre d'actif.
Si il y a plusieurs utilisateurs, cela ne marche pas, mais ne semble pas
bloquant. Il suffirait d'ailleurs que je sache combien d'utilisateurs sont
connectés (je ne sais pas faire) et ne pas lancer la procédure si il y en
a
d'autres. Dans ce cas le premier qui se connecterais seul (ce qui arrivera
nécessairement) lancerait alors le compactage.
Par contre, je ne sais pas ce qui se passe sous d'autres versions en
particulier runtime.
Bricoleur
Bonjour
y a-t-il moyen de lancer un compactage de la base par une procédure vb
lors
de la sortie de la base ? (sous access97)
j'oubliais !
Si oui, comment ?
Merci
Bonjour
y a-t-il moyen de lancer un compactage de la base par une procédure vb
lors
de la sortie de la base ? (sous access97)
j'oubliais !
Si oui, comment ?
Merci
Bonjour
y a-t-il moyen de lancer un compactage de la base par une procédure vb
lors
de la sortie de la base ? (sous access97)
j'oubliais !
Si oui, comment ?
Merci