Bonjour, comme mon titre l'indique j'ai un souci avc une requête INSERT INTO, je désire créer une table temporaire dans laquelle je mettrais les résultats d'une requête sur une seule table existante, ce qui donne le code suivant :
sql1 "Insert INTO Tabletemporaire(SommeCaisse) SELECT SUM(Nombrecaisse) AS Nbcaisse FROM " & table1 & " WHERE Nombrecaisse>" & NbCaisseMin1 & " and Nombrecaisse<" & NbCaisseMax1 & " And annee " & an1 & ""
Set QD = Db.CreateQueryDef("")
DoCmd.RunSQL sql1
la requête fait une somme des caisses comprises entre le choix entrer dans les varaibles NbCaisseMin1 et NbCaisseMax1, quand je l'éxécute, aucun problèmes, j'ai un message d'alerte stipulant que je vais ajouter une ligne à ma table temporaire, je fais "ok" puis quand j'ouvre ma table, j'ai une ligne vide qui à été ajoutée, et la je sèche...
J'ai évidemment pris des valeurs non nulles pour ma somme, de toute façon le format étant numérique je devrais avoir zéro dans le pire des cas non ? enfin si quelqu'un peut m'aider, merci bien ;)
Tiens, j'ai pas eu les mails d'alertes comme quoi il y avait des réponses !!!!!!
Tout d'abord es-ce que ta requette SELECT seule renvoie quelque chose, n'y aurait-il pas un problème avec le champ annee et la valeur que tu lui passe ?
Salut
Idées pelle mèle :
D'abord, la question : Est-ce que ta requète Select fonctionne seule ?
Ensuite, je vois qu'il peut manquer des espaces entre les n,oms ou les mots clés qui peuvent tromper le moteur de requète.
Je te conseille de toujours présenter tes requète de manière à les relire facilement, exemple :
sql1 = "Insert INTO Tabletemporaire " & _
" (SommeCaisse) " & _
"SELECT SUM(Nombrecaisse) AS Nbcaisse " & _
" FROM " & table1 & _
" WHERE Nombrecaisse > " & NbCaisseMin1 & _
" and Nombrecaisse < " & NbCaisseMax1 & _
" And annee = " & an1 & ""
Tu noteras les espaces en fin de chaque ligne, avant de fermer le " afin d'être sûr de ne jamais coller 2 mots.
Je pense que le manque d'espace entre Tabletemporaire et (SommeCaisse) peut troubler le moteur, ainsi que le fait de coller les signes > ou < à un nom de variable, devant comme derrière.
Dans ton Select, le "AS" n'a pas d'intérêt puisque tu n'as pas besoin d'afficher le résultat --> A supprimer
Le dernier "" n'apporte rien --> pas utile
Sous SQL, en numérique, quand tu as besoin de cadrer une valeur, il vaut mieux utilise Between :
" WHERE Nombrecaisse between " & NbCaisseMin1 & " and " & NbCaisseMax1 & _
Vala
Jack, =fr MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
D'abord merci de te pencher sur le problème, j'ai testé ta syntaxe, la requête fonctionne aussi, mais le résultat reste vide, pourtant il y a des valeurs dans la table, je ne comprends pas vraiment
Connaitrais tu quelques exemples de problèmes rencontrés qui pourraient renvoyer un vide lors de l'éxécution d'une requête ?
ps : merci pour le between c'est vrai que c'est plus pratique :)
J'avais abandonner l'idée du Values car je n'arrivais pas compilé ma requête avec, il me sort sans arrêt qu'il y a une faute de syntaxe quand je le met (erreur 3075), malheureusement il me le fait aussi avec la syntaxe que tu viens de me présenter.
La table temporaire existait déjà mais je comptait par la suite la créee avant l'insert comme dans ton exemple,
Autant pour moi pour le between ^^
L'ennui est que il y a toujours une erreur de syntaxe dans la requête j'ai testé en enlevant le ";" à la fin de sql2 mais je ne vois pas d'autres modifications possibles, sans le values la requête s'éxécute et renvoie rien, et avec j'ai une erreur de syntaxe, pour ma part je vois aucunes solutions la :o
Ah enfin, j'ai relancer en enlevant le "values" à ma requête et en regardant de plus près ma requête ( j'aurais pas cru la regardée encore plus...) et une petite erreur sur l'année était présente
en clair le variable renvoyait "0" .... <= bien vu Casy
Bon ben le résultat n'est plus vide, merci à vous tous !