Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma base
grossit de manière exponentielle, ci dessous le code utilisé pour test, le
code final comportera des variables.
Dim MaTable As Recordset
Set MaTable = CurrentDb.OpenRecordset("ZTest")
Do Until MaTable.EOF = True
MaTable.Edit
MaTable("ListNb") = "L1"
MaTable.Update
End If
MaTable.MoveNext
Loop
MaTable.Close
End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes
La 1ere colonne comprend une adresse email et la seconde que j'update 2
caractères
toto@yahoo.com L1
test@yahoo.com L2
...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en mettant
"L1"
13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés seulement
avec la meme chose "L1"
13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec la
meme chose "L1"
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
Buddy
Salut est ce que ça fait pareil si tu passe par SQL du genre DoCmd.RunSQL "UPDATE ZTest SET ListNb='L1'"
Buddy
a écrit dans le message de news:c8q3qo$7cn$
Bonjour,
Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma base grossit de manière exponentielle, ci dessous le code utilisé pour test, le code final comportera des variables.
Dim MaTable As Recordset Set MaTable = CurrentDb.OpenRecordset("ZTest") Do Until MaTable.EOF = True MaTable.Edit MaTable("ListNb") = "L1" MaTable.Update End If MaTable.MoveNext Loop MaTable.Close End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes La 1ere colonne comprend une adresse email et la seconde que j'update 2 caractères L1 L2 ...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en mettant "L1" 13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés seulement avec la meme chose "L1" 13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec la meme chose "L1"
Merci pour vos solutions.
Salut
est ce que ça fait pareil si tu passe par SQL
du genre
DoCmd.RunSQL "UPDATE ZTest SET ListNb='L1'"
Buddy
<agpub@hotmail.com> a écrit dans le message de news:c8q3qo$7cn$1@aphrodite.grec.isp.9tel.net...
Bonjour,
Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma base
grossit de manière exponentielle, ci dessous le code utilisé pour test, le
code final comportera des variables.
Dim MaTable As Recordset
Set MaTable = CurrentDb.OpenRecordset("ZTest")
Do Until MaTable.EOF = True
MaTable.Edit
MaTable("ListNb") = "L1"
MaTable.Update
End If
MaTable.MoveNext
Loop
MaTable.Close
End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes
La 1ere colonne comprend une adresse email et la seconde que j'update 2
caractères
toto@yahoo.com L1
test@yahoo.com L2
...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en mettant
"L1"
13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés seulement
avec la meme chose "L1"
13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec la
meme chose "L1"
Salut est ce que ça fait pareil si tu passe par SQL du genre DoCmd.RunSQL "UPDATE ZTest SET ListNb='L1'"
Buddy
a écrit dans le message de news:c8q3qo$7cn$
Bonjour,
Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma base grossit de manière exponentielle, ci dessous le code utilisé pour test, le code final comportera des variables.
Dim MaTable As Recordset Set MaTable = CurrentDb.OpenRecordset("ZTest") Do Until MaTable.EOF = True MaTable.Edit MaTable("ListNb") = "L1" MaTable.Update End If MaTable.MoveNext Loop MaTable.Close End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes La 1ere colonne comprend une adresse email et la seconde que j'update 2 caractères L1 L2 ...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en mettant "L1" 13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés seulement avec la meme chose "L1" 13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec la meme chose "L1"
Merci pour vos solutions.
J'ai testé : DoCmd.RunSQL "UPDATE ZTest SET ZTest.ToSend_ListNb = ""L1""" mais la base grossit normalement moins d'1 Mo, l'update sous SQL ne semble pas poser de problème.Ce qui m'intéresse c'est l'update via VBA (.edit et .update). Je précise que j'ai testé le code VBA (voir ci dessous 1er message) et cela sous plusieurs versions d'acess 2000 et XP, l'update par VBA fait grossir ma base très anormalement.
merci d'avance.
---------------------------------------------------------------------------- ------------------------------------------- "Buddy" a écrit dans le message de news:
Salut est ce que ça fait pareil si tu passe par SQL du genre DoCmd.RunSQL "UPDATE ZTest SET ListNb='L1'"
Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma base
grossit de manière exponentielle, ci dessous le code utilisé pour test, le
code final comportera des variables.
Dim MaTable As Recordset Set MaTable = CurrentDb.OpenRecordset("ZTest") Do Until MaTable.EOF = True MaTable.Edit MaTable("ListNb") = "L1" MaTable.Update End If MaTable.MoveNext Loop MaTable.Close End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes La 1ere colonne comprend une adresse email et la seconde que j'update 2 caractères L1 L2 ...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en mettant
"L1" 13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés seulement
avec la meme chose "L1" 13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec la
meme chose "L1"
Merci pour vos solutions.
J'ai testé : DoCmd.RunSQL "UPDATE ZTest SET ZTest.ToSend_ListNb = ""L1"""
mais la base grossit normalement moins d'1 Mo, l'update sous SQL ne semble
pas poser de problème.Ce qui m'intéresse c'est l'update via VBA (.edit et
.update). Je précise que j'ai testé le code VBA (voir ci dessous 1er
message) et cela sous plusieurs versions d'acess 2000 et XP, l'update par
VBA fait grossir ma base très anormalement.
merci d'avance.
----------------------------------------------------------------------------
-------------------------------------------
"Buddy" <brouhaha@noos.fr> a écrit dans le message de
news:uE4PqEMQEHA.640@TK2MSFTNGP09.phx.gbl...
Salut
est ce que ça fait pareil si tu passe par SQL
du genre
DoCmd.RunSQL "UPDATE ZTest SET ListNb='L1'"
<agpub@hotmail.com> a écrit dans le message de
news:c8q3qo$7cn$1@aphrodite.grec.isp.9tel.net...
Bonjour,
Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma
base
grossit de manière exponentielle, ci dessous le code utilisé pour test,
le
code final comportera des variables.
Dim MaTable As Recordset
Set MaTable = CurrentDb.OpenRecordset("ZTest")
Do Until MaTable.EOF = True
MaTable.Edit
MaTable("ListNb") = "L1"
MaTable.Update
End If
MaTable.MoveNext
Loop
MaTable.Close
End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes
La 1ere colonne comprend une adresse email et la seconde que j'update 2
caractères
toto@yahoo.com L1
test@yahoo.com L2
...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en
mettant
"L1"
13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés
seulement
avec la meme chose "L1"
13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec
la
J'ai testé : DoCmd.RunSQL "UPDATE ZTest SET ZTest.ToSend_ListNb = ""L1""" mais la base grossit normalement moins d'1 Mo, l'update sous SQL ne semble pas poser de problème.Ce qui m'intéresse c'est l'update via VBA (.edit et .update). Je précise que j'ai testé le code VBA (voir ci dessous 1er message) et cela sous plusieurs versions d'acess 2000 et XP, l'update par VBA fait grossir ma base très anormalement.
merci d'avance.
---------------------------------------------------------------------------- ------------------------------------------- "Buddy" a écrit dans le message de news:
Salut est ce que ça fait pareil si tu passe par SQL du genre DoCmd.RunSQL "UPDATE ZTest SET ListNb='L1'"
Je cherche désespérément la réponse à ce problème.
En effet, En effet lorsque je mets a jour une table via le code VBA ma base
grossit de manière exponentielle, ci dessous le code utilisé pour test, le
code final comportera des variables.
Dim MaTable As Recordset Set MaTable = CurrentDb.OpenRecordset("ZTest") Do Until MaTable.EOF = True MaTable.Edit MaTable("ListNb") = "L1" MaTable.Update End If MaTable.MoveNext Loop MaTable.Close End Sub
Descriptif :
Table avec environ 200 000 enregistrements, dans 2 colonnes La 1ere colonne comprend une adresse email et la seconde que j'update 2 caractères L1 L2 ...etc
Les chiffres :
13788ko --> 14 068ko avec SQL pour les 200 000 enregistrements, en mettant
"L1" 13272ko --> 15 280ko avec VBA pour 500 enregistrements updatés seulement
avec la meme chose "L1" 13272ko --> 350 000ko avec VBA pour 200 000 enregistrements updatés avec la
meme chose "L1"
Merci pour vos solutions.
Daniel Carollo
Bonjour agpub!
Lors de vos tests, avez-vous fait les essais sur de bases identiques? (par opposition a une seule base dans laquelle vous auriez fait les essais les uns apres les autres), c'est a dire trois copies d'une meme base.
Je n'ai pas fait vos essais, mais je dirais qu'a vue de nez, il n'y a aucune raison de ne pas obtenir des resultats aleatoires. L'augmentation de la taille de la base depend du nombre de pages que Jet doit creer pour satisfaire ses besoins (internes) en espace de travail. Ces besoins dependent de l'oragnisation du stockage des donnes, de leur ordre, et de l'ordre des mises a jour.
La grande difference obtenue entre votre premiere manip et la derniere s'explique aisement par le fait qu'en passant par SQL (donc une requete), il n'y a qu'un seul changement de 200 000 enregistrements, alors qu'en utilisant votre boucle on fait 200 000 changements d'un enregistrement, ce qui n'est pas du tout la meme chose.
En regle generale, les changements d'enregistrements en VBA doivent se limiter a quelques enregistrements (a vue de nez, je dirais une dizaine) et les traitements de donnees (sur de portions de tables consequents) doivent utiliser des requetes. Une moulinette en VBA pour balayer une table est une aberration.
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
wrote in message news:c8r8pl$rkb$
J'ai testé : DoCmd.RunSQL "UPDATE ZTest SET ZTest.ToSend_ListNb = ""L1""" mais la base grossit normalement moins d'1 Mo, l'update sous SQL ne semble pas poser de problème.Ce qui m'intéresse c'est l'update via VBA (.edit et .update). Je précise que j'ai testé le code VBA (voir ci dessous 1er message) et cela sous plusieurs versions d'acess 2000 et XP, l'update par VBA fait grossir ma base très anormalement.
merci d'avance.
Bonjour agpub!
Lors de vos tests, avez-vous fait les essais sur de bases identiques? (par
opposition a une seule base dans laquelle vous auriez fait les essais les
uns apres les autres), c'est a dire trois copies d'une meme base.
Je n'ai pas fait vos essais, mais je dirais qu'a vue de nez, il n'y a aucune
raison de ne pas obtenir des resultats aleatoires. L'augmentation de la
taille de la base depend du nombre de pages que Jet doit creer pour
satisfaire ses besoins (internes) en espace de travail. Ces besoins
dependent de l'oragnisation du stockage des donnes, de leur ordre, et de
l'ordre des mises a jour.
La grande difference obtenue entre votre premiere manip et la derniere
s'explique aisement par le fait qu'en passant par SQL (donc une requete), il
n'y a qu'un seul changement de 200 000 enregistrements, alors qu'en
utilisant votre boucle on fait 200 000 changements d'un enregistrement, ce
qui n'est pas du tout la meme chose.
En regle generale, les changements d'enregistrements en VBA doivent se
limiter a quelques enregistrements (a vue de nez, je dirais une dizaine) et
les traitements de donnees (sur de portions de tables consequents) doivent
utiliser des requetes. Une moulinette en VBA pour balayer une table est une
aberration.
--
Daniel :-)
Computing Technologies International - www.computing-tech.com - We
provide solutions...
<agpub@hotmail.com> wrote in message
news:c8r8pl$rkb$1@aphrodite.grec.isp.9tel.net...
J'ai testé : DoCmd.RunSQL "UPDATE ZTest SET ZTest.ToSend_ListNb = ""L1"""
mais la base grossit normalement moins d'1 Mo, l'update sous SQL ne semble
pas poser de problème.Ce qui m'intéresse c'est l'update via VBA (.edit et
.update). Je précise que j'ai testé le code VBA (voir ci dessous 1er
message) et cela sous plusieurs versions d'acess 2000 et XP, l'update par
VBA fait grossir ma base très anormalement.
Lors de vos tests, avez-vous fait les essais sur de bases identiques? (par opposition a une seule base dans laquelle vous auriez fait les essais les uns apres les autres), c'est a dire trois copies d'une meme base.
Je n'ai pas fait vos essais, mais je dirais qu'a vue de nez, il n'y a aucune raison de ne pas obtenir des resultats aleatoires. L'augmentation de la taille de la base depend du nombre de pages que Jet doit creer pour satisfaire ses besoins (internes) en espace de travail. Ces besoins dependent de l'oragnisation du stockage des donnes, de leur ordre, et de l'ordre des mises a jour.
La grande difference obtenue entre votre premiere manip et la derniere s'explique aisement par le fait qu'en passant par SQL (donc une requete), il n'y a qu'un seul changement de 200 000 enregistrements, alors qu'en utilisant votre boucle on fait 200 000 changements d'un enregistrement, ce qui n'est pas du tout la meme chose.
En regle generale, les changements d'enregistrements en VBA doivent se limiter a quelques enregistrements (a vue de nez, je dirais une dizaine) et les traitements de donnees (sur de portions de tables consequents) doivent utiliser des requetes. Une moulinette en VBA pour balayer une table est une aberration.
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
wrote in message news:c8r8pl$rkb$
J'ai testé : DoCmd.RunSQL "UPDATE ZTest SET ZTest.ToSend_ListNb = ""L1""" mais la base grossit normalement moins d'1 Mo, l'update sous SQL ne semble pas poser de problème.Ce qui m'intéresse c'est l'update via VBA (.edit et .update). Je précise que j'ai testé le code VBA (voir ci dessous 1er message) et cela sous plusieurs versions d'acess 2000 et XP, l'update par VBA fait grossir ma base très anormalement.