Mon insert into me renvoie un résultat vide [Résolu]

Signaler
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
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 ;)

10 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
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 ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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)
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

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 :)
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Il te manque un mot clé dans ta syntaxe INSERT

sql1 = "Insert INTO Tabletemporaire " & _
       "       (SommeCaisse) VALUES ( " & _
       "SELECT SUM(Nombrecaisse) AS Nbcaisse " & _
       "  FROM " & table1 & _
       " WHERE Nombrecaisse between " & NbCaisseMin1 & " and " & NbCaisseMax1 & _
       "   And annee = " & an1 & ")"

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

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.

Est ce un problèmes de parenthèses ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
salut,

1. la table

Tabletemporaire

existe-t'elle ? faire un INSERT OK mais il faut la créer d'abord

2.
Nombrecaisse
semble être une valeur numérique. sauf erreur,

between

ne se fait que sur une date!






sql1 = 
"CREATE TABLE [Tabletemporaire]

& _

       "([Nombrecaisse] INT);"

sql2 = "INSERT INTO [Tabletemporaire]
([Nombrecaisse]) " & _
       "VALUES (" & _
                "SELECT
SUM([Nombrecaisse]) AS [Nbcaisse] " & _
                "FROM
[" & table1 & "]
" & _
                "WHERE [Nombrecaisse] > " & NbCaisseMin1 & "
" & _
                "AND [Nombrecaisse] > " & NbCaisseMax1 & "
" & _
                "AND [annee] = " & an1 & _
               ");"

sql3 = "DROP TABLE [Tabletemporaire];"





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>






++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

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
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

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 !
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
[../auteur/PYB54/1431541.aspx pyb54]

-> et dans mon sql2, petite erreur : 

"AND [Nombrecaisse] < " 
& NbCaisseMax1 &

   ...
oups ^^
est-ce que les autres codes proposés sont bons avec ta valeur "non 0"? (par curiosité quand même...., avec ; etc)



[../auteur/CASY/333139.aspx casy]

(salut) -> il y a eu quelques problèmes, certains mails n'ont pas pu être envoyés. tout est normalement rentré dans l'ordre

++
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
"...il y a eu quelques problèmes, certains mails n'ont pas pu être envoyés. tout est normalement rentré dans l'ordre..."

Je viens de voir ça, oui, ma boite mail viens de faire une indigestion

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php