Comparaison champ table et champ saisi de formulaire

elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010 - 6 sept. 2010 à 08:11
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010 - 6 sept. 2010 à 15:45
bonjour, je fais des requetes de statistiques et je voudrais avoir mes commandes concernées par les dates saisies au préalable dans un formulaire

j'ai essayé la commande BETWEEn et aussi cette méthode (voici ma requete)


Code sql :
SELECT [Ordres de fabrication].[Numéro OF], [Ordres de fabrication].[date], [Ordres de fabrication].[Client], [Ordres de fabrication].[Quantité], [Ordres de fabrication].[Prix1], [Ordres de fabrication].[Montant], [Ordres de fabrication].[Pmax], Sum([Ordres de fabrication].[Pmax]) AS SommePoids
FROM [Ordres de fabrication]
WHERE [Ordres de fabrication].[date]>=[Forms]![StatistiquesCommandes]![tfDateDebut] AND [Ordres de fabrication].[date]<=[Forms]![StatistiquesCommandes]![tfDateFin]
GROUP BY [Ordres de fabrication].[Numéro OF], [Ordres de fabrication].[date], [Ordres de fabrication].[Client], [Ordres de fabrication].[Quantité], [Ordres de fabrication].[Prix1], [Ordres de fabrication].[Montant], [Ordres de fabrication].[Pmax];
quelle est la bonne syntaxe pour n'avoir que les commandes enre telle et telle date ?
MERCI beaucoup pour vos réponses car j'en ai bien besoin

11 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 sept. 2010 à 09:25
Salut,

C'est sous quel SGBD ? Chaque SGBD nécessite un format de date bien définit, c'est sûrement cà ton problème.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010
6 sept. 2010 à 09:35
hello !! cest sous acess2000 que j'ai ce probleme?!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 sept. 2010 à 09:50
Salut,

Ok, donc à ce moment là il faut que tu formatte ta date au format suivant : #MM/dd/yyyy#, utilise la fonction Format de vb pour cela.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010
6 sept. 2010 à 09:58
re: ma date est déjà formatée comme ça ... par contre je pense que ma syntaxe dans ma requete pour avoir mes commandes entre les dates saisies ne fonctionne pas....

ma fonction "SUM" fonctionne quand a elle amsi pour chaque ligne indépendamment alors que ej voudrais faire la somme globale de toute la colonne.....
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 sept. 2010 à 10:03
Salut,

Ta requête me semble bonne, es-tu sûr de ton format de date ? As-tu bien des dièses (#) autour de tes dates ?

Pour tester, tu peux essayer ceci :
SELECT [Numéro OF], date, Client, Quantité, Prix1, Montant, Pmax, Sum(Pmax) AS SommePoids
FROM [Ordres de fabrication]
WHERE date>= #01/01/2010# AND date<= #12/31/2010#
GROUP BY [Numéro OF], date, Client, Quantité, Prix1, Montant, Pmax;

Attention de ne pas mettre le PMax dans tes champs SELECT (ca ne sert à rien), et surtout, dans ton GROUP BY, sinon tu n'obtiendras pas une somme.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010
6 sept. 2010 à 10:33
comme tu as vu mes dates sont récupérées d'un formulaire donc il faut que je mette la formule"Formulaire![....]..." et je ne peux pas mettre de # devant. Par contre j'ai enlevé le Pmax (qui correspond au poids de chaque commande) dans ma requete et il me le demande quand je veux l'executer....

Autre question : pourquoi ma somme se fait seulement ligne par ligne et ne se cumule pas au fur et a mesure ?!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 sept. 2010 à 10:40
Salut,

C'est à cause du GROUP BY : si tu mets tout tes champs, et que tous représente un enregistrement unique, forcément, il na va pas sommer les valeurs, il faut que tu mettes les champs vraiment utiles dans le GROUP BY.

Je n'ai jamais fait de VBA, donc je ne sais pas comment ca se passe pour les requêtes, mais essaye ainsi :
[Ordres de fabrication].[date]>=#[Forms]![StatistiquesCommandes]![tfDateDebut]#

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010
6 sept. 2010 à 11:12
merci pour ta réponse , j'ai essayé avec les # , il m'annonce une erreur de syntaxe ....>donc ça passe pas... :(
j'ai laissé seulement la pmax et le montant dans mon groupby et il me dit dans un message d'erreur que je n'utilise pas le Numero d'OF comme une partie de la fonction d'agrégat.. bref, je ne comprends pas pourquoi il ne veut ni m'afficher la somme cumulée ni prendre en compte ces maudites dates que je saisi dans mon formulaire....
sacré SQL :(
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 sept. 2010 à 12:07
Salut,

Quand tu fais une somme de champ, il faut définir le groupe auquel ca s'applique : si dans le group by tu mets tout tes champs, ca ne sers à rien, vu que ton groupe correspondra à chaque enregistrement, donc il n'y a pas de somme à faire.

Petit rappel de la fonction SUM et la clause GROUP BY avec un petit exemple :

Une table Personne :
Nom Prenom Age
toto titi 10
toto tata 20
titi tutu 30

Si tu fais :
SELECT Nom, Prenom, SUM(age) FROM personne GROUP BY Nom, Prenom, Age

ca va te renvoyer la même chose que :
SELECT Nom, Prenom, age FROM personne

car ton group by ne définit pas de groupe au final...

Par contre, si tu fais :
SELECT Nom, SUM(age) FROM personne GROUP BY Nom

là ca te renverra 2 enregistrements : les toto avec la somme de leur age, et le titi avec son age car le groupe porte sur le nom de famille.

Par contre, si tu fais :
SELECT Nom, Prenom, SUM(age) FROM personne GROUP BY Nom

Là ca te fait une erreur car il n'est pas possible d'avoir le nom ET le prénom alors que tu fais un groupe uniquement sur le nom de famille !

C'est ca ton erreur d'agrégat : tu essaye de faire un select d'un champ qui n'es pas dans le group by. Donc il faut bien réfléchir aux champs que tu as besoin, et quel groupe constituer.

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010
6 sept. 2010 à 14:43
merci beaucoup Darksidious, j'ai bien compris ce que tu viens de me dire, je viens d'essayer pas mal de combinaisons et toujours pas de résultat.
Comme tu le vois la requete est juste faite pour sortir mes commandes entre les dates saisies dans le formulaire et avoir un champ calculé de somme (poids) pour toutes les commandes...

donc si je suis ce que tu me dis le grouby est peut etre tout simplement inutile et ma somme ne fonctionne toujours pas , y compris les dates ...... arf j'en ai marre un peu... :(

j'ai fais le tour de ce que je connais sans résultat... merci !!!!
0
elnico16 Messages postés 50 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 17 septembre 2010
6 sept. 2010 à 15:45
merci darksidious pour ton aide !!
j'ai bien compris ce que tu as expliqué sur le groupby alors si ça se trouve je n'en ai meme pas besoin car mon seul but est de faire une colonne pour incrémenter le total du montant des commandes affichées....

mais en l'enlevant toujours le meme mesage d'agrégat....
maintenant j'arrive à afficher le résultat suivant les dates saisies dans le formulaire avant mais toujours pas de total...(seulement ligne par ligne)

comment incrémenter cette colonne?! faut'il que je mette comme une formule de calcul dans le SQL( genre somme=somme+montantOF)?
merci!!!!!!!
0
Rejoignez-nous