Mon insert into me renvoie un résultat vide

Résolu
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010 - 23 nov. 2008 à 15:00
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 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 ;)

10 réponses

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

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 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 :)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 nov. 2008 à 16:28
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 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.

Est ce un problèmes de parenthèses ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2008 à 18:01
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 
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 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
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 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 !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2008 à 19:03
[../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

++
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 nov. 2008 à 10:48
"...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
0
Rejoignez-nous