Requete Access

Sagara-kun Messages postés 38 Statut Membre -  
blux Messages postés 19333 Date d'inscription   Statut Modérateur Dernière intervention   -
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 38 Statut Membre 1
 
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 19333 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Tu as mis ton iif avant ton sum, donc ça ne va pas.
0
blux Messages postés 19333 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
oops !

fallait lire 'APRES' le sum et non 'AVANT'...
0
Sagara-kun Messages postés 38 Statut Membre 1
 
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 19333 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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 38 Statut Membre 1
 
Tu pourrais me faire un exemple a partir de ma requete de base stp ?
0
blux Messages postés 19333 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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 38 Statut Membre 1
 
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 19333 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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 38 Statut Membre 1
 
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 19333 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
fais deux requêtes de suite : INSERT et UPDATE, ça sera plus facile à gérer...
0