stimp4ck
Messages postés2Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention 3 mai 2016
-
4 nov. 2008 à 12:10
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 2010
-
6 nov. 2008 à 06:08
Bonjour, je souhaite charger une table Access assez importante (203 champs) avec le contenu d'un fichier assez important (+ de 600 lignes) par macro.
Le code que j'ai deja fait marche bel et bien, mais il est assez lent...
J'ai donc 2 boucles dans cette macro, une pour passer en revu chaque ligne du fichier, et une autre qui passe en revu chaque champ, par ces 2 boucles je créé une requete sql "Insert into blablabla" => Cette partie la est assez rapide
Ce qui me pose problème niveau temps de traitement est en fait l'execution de chaque requete avec la commande "dbs.execute" (en effet si vous avez bien suivi ca me fait + de 600 requetes insert a executer... )
Donc j'aurais aimé savoir si il y avait moyen de garnir cette table plus rapidement ?
Peut etre en la chargeant a partir d'un fichier que je met en forme pour le charger directement dans la table Access sans passer par sql ?
Ou d'autres solutions /suggestions peu être ?
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 6 nov. 2008 à 06:02
Bonjour
Si j'ai bien saisi, tu as une rêquête par champ, soit 203 requêtes par ligne, soit 203 X 600 requêtes pour charger ta table !!!
Je vois un gros avantage à cette méthode, c'est qu'elle te laisse le temps d'aller faire ton jogging
Je pense que dans ce cas précis il vaut mieux éviter SQL, et faire une boucle sur la collection Fields d'un Recordset en mode Insert.
dim rst as Recordset
dim champ as Field
dim i as Integer
dim tableau(202) as string
set rst = dbs.openrecordset("maTable", dbopendynaset)
Do Until eof(#fichier)
<Lire une ligne et charger les champs dans tableau()>
rst.AddNew
i = 0
For Each champ in rst.Fields
champ.value = table(i)
i = i + 1
Next
rst.Update
Loop
rst.Close
dbs.Close
Voilà, ça devrait moins ramer. Et pour ton jogging... ben, tu n'auras qu'à courir plus vite