Requete Access

Fermé
Sagara-kun Messages postés 34 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 19 mars 2009 - 18 févr. 2009 à 09:51
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 - 20 févr. 2009 à 11:31
Bonjour,

j'essaye desesperement d'integrer un if dans mes requetes SQL mais rien faire il me sort un message d'erreur comme quoi il manque l'opérateur.

Voici mon code:

SELECT Heures_travaillees.Matricule, Heures_travaillees.Nom, Heures_travaillees.Prenom, Heures_travaillees.Activite, Sum(Heures_travaillees.Heures) AS Heures, Accident_travail.DateAccident, Accident_travail.NbJourArret AS NbJourArret
FROM Heures_travaillees INNER JOIN Accident_travail ON Heures_travaillees.Matricule = Accident_travail.Matricule
WHERE (((Heures_travaillees.Mois)=6) AND (Month([Accident_travail]![MoisEnCours])=6))
GROUP BY Heures_travaillees.Matricule, Heures_travaillees.Nom, Heures_travaillees.Prenom, Heures_travaillees.Activite, Accident_travail.DateAccident, Accident_travail.NbJourArret
DateAccident: VraiFaux([Heures_travaillees]![Matricule]<>[Accident_Travail]![Matricule];DateAccident=#31/12/9999#;[Accident_travail]![DateAccident])
NbJourArret: VraiFaux([Heures_travaillees]![Matricule]<>[Accident_Travail]![Matricule];NbJourArret=0;[Accident_travail]![NbJourArret]);


et le message d'erreur:

Erreur de syntaxe (opérateur absent) dans l'expression 'Accident_travail.NbJourArret
DateAccident: VraiFaux([Heures_travaillees]![Matricule]<>[Accident_Travail]![Matricule];DateAccident=#31/12/9999#;[Accident_travail]![DateAccident])
NbJourArret: VraiFaux([Heures_travaillees]![Matricule]<>[Accident_Travail]!'

26 réponses

Sagara-kun Messages postés 34 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 19 mars 2009 1
20 févr. 2009 à 08:03
Voila la requete:

SELECT Heures_travaillees.Matricule, Heures_travaillees.Nom, Heures_travaillees.Prenom, Heures_travaillees.Activite, Heures_travaillees.Mois, Heures_travaillees.Annee, Heures_travaillees.Heures, Accident_travail.DateAccident, Sum(Accident_travail.NbJourArret) AS NbJourArret, IIf((Month(Accident_travai.MoisEnCours))=Heures_travaillees.Mois,Accident_travail.DateAccident,DateAccident=#12/31/9999#),
iif((Month(Accident_travail.MoisEnCours))=Heures_travaillees.Mois,Accident_travail.NbJourArret,NbJourArret=0)
FROM Heures_travaillees RIGHT JOIN Accident_travail ON Heures_travaillees.Matricule=Accident_travail.Matricule
GROUP BY Heures_travaillees.Matricule, Heures_travaillees.Nom, Heures_travaillees.Prenom, Heures_travaillees.Activite, Heures_travaillees.Mois, Heures_travaillees.Annee, Heures_travaillees.Heures, Accident_travail.DateAccident, Accident_travail.MoisEnCours;
0
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 3 319
20 févr. 2009 à 09:27
Tu as mis ton iif avant ton sum, donc ça ne va pas.
0
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 3 319
20 févr. 2009 à 09:45
oops !

fallait lire 'APRES' le sum et non 'AVANT'...
0
Sagara-kun Messages postés 34 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 19 mars 2009 1
20 févr. 2009 à 09:32
Donne moi un exemple de la requete alors stp parce que je vois pas où je peut mettre mes iif
0
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 3 319
20 févr. 2009 à 09:45
La meilleure des solutions serait de passer en 2 fois comme je l'ai expliqué plus haut, ça permettrait d'avoir des requêtes plus simples.
0
Sagara-kun Messages postés 34 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 19 mars 2009 1
20 févr. 2009 à 09:52
Tu pourrais me faire un exemple a partir de ma requete de base stp ?
0
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 3 319
20 févr. 2009 à 10:41
Un truc comme ça (le sum en dernier et les iif faisant partie du group by) :
SELECT Heures_travaillees.Matricule, Heures_travaillees.Nom, Heures_travaillees.Prenom, Heures_travaillees.Activite, Heures_travaillees.Mois, Heures_travaillees.Annee, Heures_travaillees.Heures, Accident_travail.DateAccident,  IIf((Month(Accident_travai.MoisEnCours))=Heures_travaillees.mois,Accident_travail.DateAccident,DateAccident=#12/31/9999#­),
iif((Month(Accident_travail.MoisEnCours))=Heures_travaillees.Mois,Accident_travail.NbJourArret,NbJourArret=0),Sum(Accident_travail.NbJourArret) AS NbJourArret
FROM Heures_travaillees RIGHT JOIN Accident_travail ON Heures_travaillees.Matricule=Accident_travail.Matricule
GROUP BY Heures_travaillees.Matricule, Heures_travaillees.Nom, Heures_travaillees.Prenom, Heures_travaillees.Activite, Heures_travaillees.Mois, Heures_travaillees.Annee, Heures_travaillees.Heures, Accident_travail.DateAccident, Accident_travail.MoisEnCours,IIf((Month(Accident_travai.MoisEnCours))=Heures_travaillees.­Mois,Accident_travail.DateAccident,DateAccident=#12/31/9999#­),
iif((Month(Accident_travail.MoisEnCours))=Heures_travaillees­.Mois,Accident_travail.NbJourArret,NbJourArret=0);
Aux oublis de virgules près...
0

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

Posez votre question
Sagara-kun Messages postés 34 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 19 mars 2009 1
20 févr. 2009 à 10:50
Vous avez essayé d'executer une requête ne comprenant pas l'expression spécifiée
'IIf(Month(Accident_travail.MoisEnCours)=Heures_travaillees.Mois,Accident_travail.NbJourArret,NbJourArret=0)'
comme une partie de la fonction d'agrégat
0
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 3 319
20 févr. 2009 à 10:57
ben, à part une erreur de syntaxe, je ne vois pas...

tu peux envoyer ta base 'en access 2002' que je jette un oeil ?
0
Sagara-kun Messages postés 34 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 19 mars 2009 1
20 févr. 2009 à 11:01
Laisse tomber la base fait 1Go600Mo et puis jsuis pas administrateur de ma machine je peut quasiment rien faire dessus.
Ba c'est pas grave si jy arrive pas je vais passer par des tables intermediaires sa sera plus simple.
Merci beaucoup tout de meme pour ton aide.
0
blux Messages postés 26546 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 décembre 2024 3 319
20 févr. 2009 à 11:31
fais deux requêtes de suite : INSERT et UPDATE, ça sera plus facile à gérer...
0