|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bonjour,
J'ai une requête qui s’exécute sans problème avec le DoCmd.OpenQuerry quand je la crée avec l'assistant d'access, mais met plus de 11h et n'aboutit pas quand je passe par VBA en DoCmd.RunSql. C'est une requête INSERT dans une table ayant une clef. La table contient déjà 3,5 millions d'enregistrements. Quelqu'un à une idée ? Merci. |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : juin 2010 Messages : 77 ![]() |
Bonjour,
Quel type de données ajoutez-vous à votre table?? Il y a beaucoup de champ? La requête elle ressemble à quoi (en vb)?? merci pour ces quelques précisions... |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bonjour et merci de ta rapidité
![]() Alors, les types de champs : numériques, texte, date heures nombre de champ : une quarantaine la requête : Code :
|
||
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour,
Citation:
QueryDef.Execute Method |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bonjour,
ça ne change rien avec la méthode execute Code :
|
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bon, je me suis résolu à faire la requête en deux temps :
1 - comme c'est une insertion des données d'une table A déjà volumineuse dans une autre table B très volumineuse, ayant toutes les deux une clé primaire (donc possibilité de bcp de doublons), j'insère d'abord les enregistrements de A dans une table intermédiaire C, donc forcément cette table est bcp plus légère. 2 - j'exécute ma requête en se basant sur la table C. C'est une solution de dépannage qui ne répond pas à ma question initiale : pourquoi une requête conséquente passe bien avec l'assistant et non en VBA ? |
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Inscription : juin 2010 Messages : 77 ![]() |
Bonjour,
Par simple curiosité votre table "EnCours_Segment" est régit sous les règles de conception du relationnel ou de l'objet??? Sinon, la seule erreur que j'ai repéré dans votre requête est l'absence du terme "VALUES" (mais qui peut avoir été tronqué lors du copier/coller) Rappel syntaxe Insertion SQL Code :
|
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bonjour,
Je ne comprends pas "régit sous les règles de conception du relationnel ou de l'objet", mais c'est une simple table dans une bdd (c'est la seule table de ma bdd et n'est liée à aucune autre table). En fait comme mes tables sont volumineuses, elle sont splittées une à une dans des bases différentes, et j'ai un applicatif (bdd acces) dont les tables pointent sur toutes les tables des autres bdd bdd (tables liées). Autrement pas d'erreur dans le SQL, le VALUES est facultatif (du moins pour acces). Merci, et dans l'attente d'autres proposition si t'en a |
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : juin 2010 Messages : 77 ![]() |
Re-
Ok, pour le "régit" en fait tu utilises access que pour l'archivage de données. Bref, pour le "Values", tu as certainement raison, il n'est pas obligatoire dans access, mais il doit l'être pour le code que tu passes après "RunSQL" puisque là tu fais appel à la syntaxe standard du SQL non plus au dialect access (du moins je crois... Sinon, j'ai déjà eu un problème du même style. Cela provenait des données que j'essayais d'insérer, il y avait soit des champs contenant la valeur "NULL" (et null interdit dans la table destination) et aussi des champs contenant des caractères utilisé par le SQL (style le caractère apostrophe non protégé...) pour y remédier, je vérifais la cohérence de mes données avant de les insérer... Sinon, il n'y a pas une petite boucle de cacher quelques part dans ton programme appelant?? Voilà en espérant que ces 2 petites pistes pourront t'aider! Bon courage |
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Rebonjour Lagnio et merci pour ton intérêt,
la syntaxe : Code :
la piste que tu proposes me parait intéressante, mais je ne crois pas que ça vient de là, puisque quand je passe par une table intermédiaire dans laquelle je mets seulement les enregistrements pouvant être ajoutés à ma table finale (j'élimine les Id déja existants dans ma table finale), la requête aboutit. Perso, je penche plus vers un truc qui faciliterait l'exécution des requêtes sur des tables volumineuses (ici en l’occurrence je fais intervenir 4 tables dont l'une de 3,5 millions d'enregistrements (1GO) et les 3 autres plus d'un millions (500 mg en moy par tables)). Peut être les limites d'access sont proches ...! ça serait dommage. Si c'est le cas je suis preneur d'idées pour éviter les limites d'access et faciliter le travail avec de grosses tables de données. Merci encore |
||
|
|
00
|
|
|
#11 | ||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Peut-être que ça irait mieux avec des jointures entre les tables. A la place de ... Code :
Code :
et peut éviter que le fichier temporaire du moteur dépasse les 2Go, ce qui empêche la requête d'aller à son terme. EnCours_Chassis (OL_No_Chassis) EnCours_OP (OL_No_Chassis, OP_Centre) EnCours_OT (OL_No_Chassis, OT_Centre_Depart) A+ |
||||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bonjour,
A la base j'avais des jointures, que j'ai cassé car c'était long. J'ai réessayé donc en mettant comme tu proposes et les index aussi, mais c'est pire qu'avant, la requête n'avance que d'un trait au lieu de 4 avant, et reste bloquée. Merci pour l'idée des index, j'avais pas ça en tête ça va certainement m'aider par la suite. |
|
|
00
|
|
|
#13 | |
![]() ![]() ![]() |
Citation:
![]() Solution Un fichier adp (disponible depuis Access 2000) basé (donc) sur un server SQLServer (y compris SQLExpress) et là, ca devrait booster un peu tout ça...
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 13 ![]() |
Bonjour,
Je confirme que c'est en local Merci pour l'idée d'ADP, encore faut il que je m'y autoforme, je vais regarder cette piste (je ne suis pas sur d'avoir toutes les billes, serveurs, et même la possibilité d'utiliser SQL SERVER. A bientot |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com