OVH Cloud OVH Cloud

Lenteur exécution Access2003

9 réponses
Avatar
Guy FALESSE
Bonjour à tous,

J'ai une base de données où les tables sont liées ce qui me permet de lier
les tables d'année antérieure facilement après avoir "délié" les tables
actuelles.
Il me semblait que c'était très long sur Access2003.
Pour en être certain, j'ai placé cette même base avec les mêmes tables dans
un autre PC ayant AccessXP et surprise:
Pour lier les tables 2003, il faut à Access2003: 35 secondes et autant pour
revenir aux tables 2004 et 4 (quattre) secondes pour Access Xp.
Ya-t-il une explication à ce phénomène, rien n'a été changé, pas de
compilation, rien.
S'il n'y a ps de remède, je vais m'empresser de revenir à Office XP bien
sûr, bizarre tout de même.
Raymond (SENEQUE) préconisait justement d'utiliser toujours la dernière
version d'Access et là...

D'avance merci,

Guy FALESSE

9 réponses

Avatar
Raymond [mvp]
Bonjour Guy.

ton test est entâché de nullité car exécuté sur un autre pc, donc config
différente.
je plaisante.
la différence est énorme, il est vrai.
combien de tables ? quel code utilises-tu ?
35 secondes, c'est trop long de toute façon.
as-tu un antivirus sur les deux postes ?
il va falloir procéder par tatonnement. il aurait été mieux que tu ais les
deux access sur le même poste. fais des essais d'abord sur des tables
vierges. si tu as toujours 35 secondes sur des tables vierges, on pourra
faire des essais (chez moi par exemple pour comparer sur un réseau simple).
C'était les 1eres idées.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

J'ai une base de données où les tables sont liées ce qui me permet de lier
les tables d'année antérieure facilement après avoir "délié" les tables
actuelles.
Il me semblait que c'était très long sur Access2003.
Pour en être certain, j'ai placé cette même base avec les mêmes tables
dans

un autre PC ayant AccessXP et surprise:
Pour lier les tables 2003, il faut à Access2003: 35 secondes et autant
pour

revenir aux tables 2004 et 4 (quattre) secondes pour Access Xp.
Ya-t-il une explication à ce phénomène, rien n'a été changé, pas de
compilation, rien.
S'il n'y a ps de remède, je vais m'empresser de revenir à Office XP bien
sûr, bizarre tout de même.
Raymond (SENEQUE) préconisait justement d'utiliser toujours la dernière
version d'Access et là...

D'avance merci,

Guy FALESSE




Avatar
Guy FALESSE
Salut Raymond,

Merci d'abord pour ta réponse.
J'ai placé les bases justement sur 2 PC pour ne pas qu'il y ait des conflits
de librairie, notamment les ...Access.Application, 11 ou 10
Cette base a été compilée en premier temps chez un ami qui travaille avec
Access Xp, elle pèse tout de même un trentaine de Mo.
Chez moi, cette même base a été compilée sous Acess 2003.
Les tables liées sont au nombre de 38.
J'ai un anti-virus sur les 2 postes et je ne travaille pas en réseau.
Je lie les tables une par une, je ne sais pas comment faire pour lier toutes
les tables, j'ai lu et relu la façon de faire, mais je n'ai pas compris
grand chose:
Je fais comme ça:
Dim chCritères As String, chem As String, TBD As String
chCritères = DatePart("yyyy", Date)
chem = "c:SVellaVellaTables" & chCritères & ".mdb"
TBD = "Microsoft Access"
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses",
"Adresses"
Comment faire pour lier toutes les tables d'un coup, parce que c'est
fastidieux et lorsqu'on me demande d'ajouter un table, si j'oublie de
l'ajouter, erreur bien sûr.
Il y a sans doute for each et quelqeu chose.
Je ne demande pas de vérifier, juste lier.
Bon, ça c'est une chose, je viens de commencer à créer une petite base, je
vais voir quoi, je vais encore les lier une par une.
Encore une chose, lorsque je lie les tables "à la main" ( avec le
gestionnaire d'attache),ça va vite 3 secondes.
Ouf, encore merci et @+

Guy FALESSE

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour Guy.

ton test est entâché de nullité car exécuté sur un autre pc, donc config
différente.
je plaisante.
la différence est énorme, il est vrai.
combien de tables ? quel code utilises-tu ?
35 secondes, c'est trop long de toute façon.
as-tu un antivirus sur les deux postes ?
il va falloir procéder par tatonnement. il aurait été mieux que tu ais les
deux access sur le même poste. fais des essais d'abord sur des tables
vierges. si tu as toujours 35 secondes sur des tables vierges, on pourra
faire des essais (chez moi par exemple pour comparer sur un réseau
simple).

C'était les 1eres idées.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

J'ai une base de données où les tables sont liées ce qui me permet de
lier


les tables d'année antérieure facilement après avoir "délié" les tables
actuelles.
Il me semblait que c'était très long sur Access2003.
Pour en être certain, j'ai placé cette même base avec les mêmes tables
dans

un autre PC ayant AccessXP et surprise:
Pour lier les tables 2003, il faut à Access2003: 35 secondes et autant
pour

revenir aux tables 2004 et 4 (quattre) secondes pour Access Xp.
Ya-t-il une explication à ce phénomène, rien n'a été changé, pas de
compilation, rien.
S'il n'y a ps de remède, je vais m'empresser de revenir à Office XP bien
sûr, bizarre tout de même.
Raymond (SENEQUE) préconisait justement d'utiliser toujours la dernière
version d'Access et là...

D'avance merci,

Guy FALESSE








Avatar
Raymond [mvp]
Regarde les pages:
http://access.seneque.free.fr/verifier_liens.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:
Salut Raymond,

Merci d'abord pour ta réponse.
J'ai placé les bases justement sur 2 PC pour ne pas qu'il y ait des
conflits

de librairie, notamment les ...Access.Application, 11 ou 10
Cette base a été compilée en premier temps chez un ami qui travaille avec
Access Xp, elle pèse tout de même un trentaine de Mo.
Chez moi, cette même base a été compilée sous Acess 2003.
Les tables liées sont au nombre de 38.
J'ai un anti-virus sur les 2 postes et je ne travaille pas en réseau.
Je lie les tables une par une, je ne sais pas comment faire pour lier
toutes

les tables, j'ai lu et relu la façon de faire, mais je n'ai pas compris
grand chose:
Je fais comme ça:
Dim chCritères As String, chem As String, TBD As String
chCritères = DatePart("yyyy", Date)
chem = "c:SVellaVellaTables" & chCritères & ".mdb"
TBD = "Microsoft Access"
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses",
"Adresses"
Comment faire pour lier toutes les tables d'un coup, parce que c'est
fastidieux et lorsqu'on me demande d'ajouter un table, si j'oublie de
l'ajouter, erreur bien sûr.
Il y a sans doute for each et quelqeu chose.
Je ne demande pas de vérifier, juste lier.
Bon, ça c'est une chose, je viens de commencer à créer une petite base, je
vais voir quoi, je vais encore les lier une par une.
Encore une chose, lorsque je lie les tables "à la main" ( avec le
gestionnaire d'attache),ça va vite 3 secondes.
Ouf, encore merci et @+

Guy FALESSE


Avatar
Guy FALESSE
Salut Raymond,

J'avais bien sûr déjà lu ton code et comment je fais concrètement avec la
ligne ci-dessous

Tbl.Connect = ";DATABASE=" & Chemin & ";UID="""";PWD="""""

je n'ai pas de mot de passe donc, je peux supprimer le reste de la ligne
après chemin.
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses","Adresses"
;DATABASE remplace quoi exactement? Il faut laisser la ligne telle quelle?
Parce que, où va-t-on chercher les données ?
Je ne suis pas tout à fait nul...mais presque.
@+

Guy FALESSE


"Raymond [mvp]" a écrit dans le message de
news:
Regarde les pages:
http://access.seneque.free.fr/verifier_liens.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:
Salut Raymond,

Merci d'abord pour ta réponse.
J'ai placé les bases justement sur 2 PC pour ne pas qu'il y ait des
conflits

de librairie, notamment les ...Access.Application, 11 ou 10
Cette base a été compilée en premier temps chez un ami qui travaille
avec


Access Xp, elle pèse tout de même un trentaine de Mo.
Chez moi, cette même base a été compilée sous Acess 2003.
Les tables liées sont au nombre de 38.
J'ai un anti-virus sur les 2 postes et je ne travaille pas en réseau.
Je lie les tables une par une, je ne sais pas comment faire pour lier
toutes

les tables, j'ai lu et relu la façon de faire, mais je n'ai pas compris
grand chose:
Je fais comme ça:
Dim chCritères As String, chem As String, TBD As String
chCritères = DatePart("yyyy", Date)
chem = "c:SVellaVellaTables" & chCritères & ".mdb"
TBD = "Microsoft Access"
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses",
"Adresses"
Comment faire pour lier toutes les tables d'un coup, parce que c'est
fastidieux et lorsqu'on me demande d'ajouter un table, si j'oublie de
l'ajouter, erreur bien sûr.
Il y a sans doute for each et quelqeu chose.
Je ne demande pas de vérifier, juste lier.
Bon, ça c'est une chose, je viens de commencer à créer une petite base,
je


vais voir quoi, je vais encore les lier une par une.
Encore une chose, lorsque je lie les tables "à la main" ( avec le
gestionnaire d'attache),ça va vite 3 secondes.
Ouf, encore merci et @+

Guy FALESSE






Avatar
Guy FALESSE
Salut Raymond,

Voilà, j'ai utilisé la sub ci-dessous, j'ai détaché les tables, j'ai lancé
le sub, j'ai eu le message disant que:
Tout est réparé, Vous pouvez continuer, mais les tables n'étaient pas
attachées :(
Tu comprends, pourquoi...je ne comprends pas :(

Private Sub Rafraichir_Liens()
Dim chemin As String, I As Long, DB As Database, Tbl As TableDef
Set DB = CurrentDb
On Error GoTo Err_Rafraichir_Liens
'Chemin = OpenFile(CurrentProject.Path)
chemin = "C:Documents and SettingsGuy FALESSEMes
documentsAccess2000TablesSta2004.mdb"
For I = 0 To DB.TableDefs.Count - 1
Set Tbl = DB.TableDefs(I)
If (Left(Tbl.Name, 4) <> "Msys") And (Tbl.Connect <> "") Then
Tbl.Connect = ";DATABASE=" & chemin & ";UID="""";PWD="""""
Tbl.RefreshLink
End If
Next I
MsgBox "Tout est réparé, Vous pouvez continuer."
Exit Sub
Err_Rafraichir_Liens:
MsgBox "La Table " & Tbl.Name & " liée à votre base principale " & chemin &
" ne peut pas être réparée.", vbCritical
'Sclose
Quit
End Sub
@+

Guy FALESSE

"Guy FALESSE" a écrit dans le message de
news:%
Salut Raymond,

J'avais bien sûr déjà lu ton code et comment je fais concrètement avec la
ligne ci-dessous

Tbl.Connect = ";DATABASE=" & Chemin & ";UID="""";PWD="""""

je n'ai pas de mot de passe donc, je peux supprimer le reste de la ligne
après chemin.
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses","Adresses"
;DATABASE remplace quoi exactement? Il faut laisser la ligne telle quelle?
Parce que, où va-t-on chercher les données ?
Je ne suis pas tout à fait nul...mais presque.
@+

Guy FALESSE


"Raymond [mvp]" a écrit dans le message de
news:
Regarde les pages:
http://access.seneque.free.fr/verifier_liens.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:
Salut Raymond,

Merci d'abord pour ta réponse.
J'ai placé les bases justement sur 2 PC pour ne pas qu'il y ait des
conflits

de librairie, notamment les ...Access.Application, 11 ou 10
Cette base a été compilée en premier temps chez un ami qui travaille
avec


Access Xp, elle pèse tout de même un trentaine de Mo.
Chez moi, cette même base a été compilée sous Acess 2003.
Les tables liées sont au nombre de 38.
J'ai un anti-virus sur les 2 postes et je ne travaille pas en réseau.
Je lie les tables une par une, je ne sais pas comment faire pour lier
toutes

les tables, j'ai lu et relu la façon de faire, mais je n'ai pas
compris



grand chose:
Je fais comme ça:
Dim chCritères As String, chem As String, TBD As String
chCritères = DatePart("yyyy", Date)
chem = "c:SVellaVellaTables" & chCritères & ".mdb"
TBD = "Microsoft Access"
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses",
"Adresses"
Comment faire pour lier toutes les tables d'un coup, parce que c'est
fastidieux et lorsqu'on me demande d'ajouter un table, si j'oublie de
l'ajouter, erreur bien sûr.
Il y a sans doute for each et quelqeu chose.
Je ne demande pas de vérifier, juste lier.
Bon, ça c'est une chose, je viens de commencer à créer une petite
base,



je
vais voir quoi, je vais encore les lier une par une.
Encore une chose, lorsque je lie les tables "à la main" ( avec le
gestionnaire d'attache),ça va vite 3 secondes.
Ouf, encore merci et @+

Guy FALESSE










Avatar
Guy FALESSE
Salut Raymond,

J'ai oublié de te dire que j'avais lié 7 tables et qu'ila fallut ± 7
secondes pour les lier par code.
Donc 1 seconde par table, on voit d'ailleur le travail effectué dans la
barre d'état.
Le compte est "bon" avec les 30 et des secondes pour lier les 30 et des
tables.
J'ajoute que les tables que je viens de lier, contenaient une vingtaine
d'enregistrements.
@+

Guy FALESSE


"Guy FALESSE" a écrit dans le message de
news:u%23o$
Salut Raymond,

Voilà, j'ai utilisé la sub ci-dessous, j'ai détaché les tables, j'ai lancé
le sub, j'ai eu le message disant que:
Tout est réparé, Vous pouvez continuer, mais les tables n'étaient pas
attachées :(
Tu comprends, pourquoi...je ne comprends pas :(

Private Sub Rafraichir_Liens()
Dim chemin As String, I As Long, DB As Database, Tbl As TableDef
Set DB = CurrentDb
On Error GoTo Err_Rafraichir_Liens
'Chemin = OpenFile(CurrentProject.Path)
chemin = "C:Documents and SettingsGuy FALESSEMes
documentsAccess2000TablesSta2004.mdb"
For I = 0 To DB.TableDefs.Count - 1
Set Tbl = DB.TableDefs(I)
If (Left(Tbl.Name, 4) <> "Msys") And (Tbl.Connect <> "") Then
Tbl.Connect = ";DATABASE=" & chemin & ";UID="""";PWD="""""
Tbl.RefreshLink
End If
Next I
MsgBox "Tout est réparé, Vous pouvez continuer."
Exit Sub
Err_Rafraichir_Liens:
MsgBox "La Table " & Tbl.Name & " liée à votre base principale " & chemin
&

" ne peut pas être réparée.", vbCritical
'Sclose
Quit
End Sub
@+

Guy FALESSE

"Guy FALESSE" a écrit dans le message de
news:%
Salut Raymond,

J'avais bien sûr déjà lu ton code et comment je fais concrètement avec
la


ligne ci-dessous

Tbl.Connect = ";DATABASE=" & Chemin & ";UID="""";PWD="""""

je n'ai pas de mot de passe donc, je peux supprimer le reste de la ligne
après chemin.
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses","Adresses"
;DATABASE remplace quoi exactement? Il faut laisser la ligne telle
quelle?


Parce que, où va-t-on chercher les données ?
Je ne suis pas tout à fait nul...mais presque.
@+

Guy FALESSE


"Raymond [mvp]" a écrit dans le message de
news:
Regarde les pages:
http://access.seneque.free.fr/verifier_liens.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:
Salut Raymond,

Merci d'abord pour ta réponse.
J'ai placé les bases justement sur 2 PC pour ne pas qu'il y ait des
conflits

de librairie, notamment les ...Access.Application, 11 ou 10
Cette base a été compilée en premier temps chez un ami qui travaille
avec


Access Xp, elle pèse tout de même un trentaine de Mo.
Chez moi, cette même base a été compilée sous Acess 2003.
Les tables liées sont au nombre de 38.
J'ai un anti-virus sur les 2 postes et je ne travaille pas en
réseau.




Je lie les tables une par une, je ne sais pas comment faire pour
lier




toutes
les tables, j'ai lu et relu la façon de faire, mais je n'ai pas
compris



grand chose:
Je fais comme ça:
Dim chCritères As String, chem As String, TBD As String
chCritères = DatePart("yyyy", Date)
chem = "c:SVellaVellaTables" & chCritères & ".mdb"
TBD = "Microsoft Access"
DoCmd.TransferDatabase acLink, TBD, chem, acTable, "Adresses",
"Adresses"
Comment faire pour lier toutes les tables d'un coup, parce que c'est
fastidieux et lorsqu'on me demande d'ajouter un table, si j'oublie
de




l'ajouter, erreur bien sûr.
Il y a sans doute for each et quelqeu chose.
Je ne demande pas de vérifier, juste lier.
Bon, ça c'est une chose, je viens de commencer à créer une petite
base,



je
vais voir quoi, je vais encore les lier une par une.
Encore une chose, lorsque je lie les tables "à la main" ( avec le
gestionnaire d'attache),ça va vite 3 secondes.
Ouf, encore merci et @+

Guy FALESSE














Avatar
Raymond [mvp]
Je reviens à l'instant, je viens de lire tes messages.
il ne faut pas modifier la fonction si tu n'as pas de mot de passe.
puisque tu es sur une seule base et que tu as peu d'enregistrements, peux-tu
me passer ta base ? en fichier zip et en enlevant XYZ. sur mon adresse.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guy FALESSE" a écrit dans le message de
news:eL3$
Salut Raymond,

J'ai oublié de te dire que j'avais lié 7 tables et qu'ila fallut ± 7
secondes pour les lier par code.
Donc 1 seconde par table, on voit d'ailleur le travail effectué dans la
barre d'état.
Le compte est "bon" avec les 30 et des secondes pour lier les 30 et des
tables.
J'ajoute que les tables que je viens de lier, contenaient une vingtaine
d'enregistrements.
@+

Guy FALESSE


Avatar
Raymond [mvp]
Réponse donnée par mail:

tu n'utilises pas les bonnes procédures.
la procédure que tu as pris sur mon site est incomplète. tu as rajouté deux
fonctions pour détacher et re-attacher les tables par DoCmd.TransferDatabase
acLink, ce qui est très long en temps d'exécution.
Il ne faut pas détacher les tables si le lien est bon. le principe est: si
un seul lien est en erreur, on re-attache toutes les tables.
je t'ai créé la macro autoexec qui lance le controle à l'ouverture de la
base
je t'ai mis le module de controle des tables. ne rien toucher car tu n'as
pas de password.
je t'ai mis le module openfimename pour sélectionner la base principale.
le ré-attachement de 16 tables est instantané.
tu n'as pas autre chose à faire que lancer l'autoexec, tout le reste est
automatique, tu ne changes rien dans le code.
j'ai rajouté 12 tables attachées pour les tests.

Raymond

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
Avatar
Guy FALESSE
Salut Raymond,

OK, merci pour tout, finalement tes fonctions...fonctionnent très bien.
@+

Guy FALESSE

"Raymond [mvp]" a écrit dans le message de
news:
Réponse donnée par mail:

tu n'utilises pas les bonnes procédures.
la procédure que tu as pris sur mon site est incomplète. tu as rajouté
deux

fonctions pour détacher et re-attacher les tables par
DoCmd.TransferDatabase

acLink, ce qui est très long en temps d'exécution.
Il ne faut pas détacher les tables si le lien est bon. le principe est: si
un seul lien est en erreur, on re-attache toutes les tables.
je t'ai créé la macro autoexec qui lance le controle à l'ouverture de la
base
je t'ai mis le module de controle des tables. ne rien toucher car tu n'as
pas de password.
je t'ai mis le module openfimename pour sélectionner la base principale.
le ré-attachement de 16 tables est instantané.
tu n'as pas autre chose à faire que lancer l'autoexec, tout le reste est
automatique, tu ne changes rien dans le code.
j'ai rajouté 12 tables attachées pour les tests.

Raymond

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum