pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010
-
23 nov. 2008 à 15:00
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
24 nov. 2008 à 10:48
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 ;)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 23 nov. 2008 à 18:32
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 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 nov. 2008 à 15:38
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)
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010 23 nov. 2008 à 16:10
Bonjour Jack !
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 :)
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010 23 nov. 2008 à 16:45
Bonjour Casy
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.
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010 23 nov. 2008 à 18:14
Bonjour PCPT
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
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010 23 nov. 2008 à 18:41
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 !