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
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
A voir également:
- Requete Access
- Access appdata - Guide
- Acer quick access - Forum Logiciels
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Acer Quick Access - affichage CapsLock, VerrNum - Forum logiciel systeme
- Controller access network - Télécharger - Contrôle parental
26 réponses
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
18 févr. 2009 à 11:06
18 févr. 2009 à 11:06
Salut,
il ne manquerait pas une virgule après 'Accident_travail.NbJourArret ?
il ne manquerait pas une virgule après 'Accident_travail.NbJourArret ?
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
18 févr. 2009 à 11:41
18 févr. 2009 à 11:41
Jai toujours une erreur similaire:
Erreur de syntaxe (oéprateur absent) dans l'expression
'DateAccident: VraiFaux([Heures_travaillees]![Matricule]<>[Accident_travail]![Matricule]; DateAccident=#31/12/9999#;[Accident_travail]![DateAccident])'
Erreur de syntaxe (oéprateur absent) dans l'expression
'DateAccident: VraiFaux([Heures_travaillees]![Matricule]<>[Accident_travail]![Matricule]; DateAccident=#31/12/9999#;[Accident_travail]![DateAccident])'
les points virgules signifient la fin de la requête, et comme ici il y en a plusieurs ta requête ne peux pas fonctionner il faut mettre des simples virgules à la place dans un premier temps, je pense.
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
18 févr. 2009 à 11:47
18 févr. 2009 à 11:47
Malheuresement sa ne change rien jai toujours le meme message d'erreur.
Et aussi est-ce que la requete en elle meme est dans le bon ordre?
Et aussi est-ce que la requete en elle meme est dans le bon ordre?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
18 févr. 2009 à 12:29
18 févr. 2009 à 12:29
Les ! font référence à une zone de formulaire ?
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 10:05
19 févr. 2009 à 10:05
Non en fait c'est: [Table]![ChampTable]
En SQL sa serai Table.champ
En SQL sa serai Table.champ
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
19 févr. 2009 à 10:18
19 févr. 2009 à 10:18
alors pourquoi dans ton SELECT tu as mis un point ?
et pourquoi dans ton GROUP BY tu mets des points d'interrogation, c'est pas du SQL ?
et pourquoi dans ton GROUP BY tu mets des points d'interrogation, c'est pas du SQL ?
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 10:34
19 févr. 2009 à 10:34
Les lignes correspondant a DateAccident: ** et MoisEnCours: ** ne font pas parti du GROUPBY et les points d'interrogations sont utilises parce que j'utilise une fonction integrée a Access en mode creation de ma requete
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
19 févr. 2009 à 10:45
19 févr. 2009 à 10:45
je ne vois pas de virgule entre Accident_travail.NbJourArret et DateAccident: VraiFaux, ce qui fait que la syntaxe SQL n'est pas respectée.
et j'ai du mal avec la syntaxe de la fonction que je ne connais pas (qui semble ne pas être une fonction intégrée à ACCESS, mais une fonction utilisateur)
et j'ai du mal avec la syntaxe de la fonction que je ne connais pas (qui semble ne pas être une fonction intégrée à ACCESS, mais une fonction utilisateur)
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 10:47
19 févr. 2009 à 10:47
J'ai essayer en mettant une virgule mais l'erreur apparait toujours.
Alors ma question est comment et ou faire un SI dans une requete.
Alors ma question est comment et ou faire un SI dans une requete.
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
19 févr. 2009 à 11:06
19 févr. 2009 à 11:06
En SQL ACCESS, c'est iif(test;valeur_vrai:valeur_faux).
Ce que je ne comprends pas, c'est pourquoi tu veux mettre un test APRES le GROUP BY.
Ce que je ne comprends pas, c'est pourquoi tu veux mettre un test APRES le GROUP BY.
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 11:17
19 févr. 2009 à 11:17
le iif ne marche pas et je l'ai mis apres parce que je ne savait pas où le placer
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
19 févr. 2009 à 11:23
19 févr. 2009 à 11:23
je l'ai mis apres parce que je ne savait pas où le placer
Donc, ne cherchons pas plus loin l'erreur.
Tu veux faire quoi au juste ?
Donc, ne cherchons pas plus loin l'erreur.
Tu veux faire quoi au juste ?
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 11:27
19 févr. 2009 à 11:27
Maintenant qu'on sait que je reflechi pas assez je veux savoir où mettre mon SI dans ma requete
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
19 févr. 2009 à 11:30
19 févr. 2009 à 11:30
Ca dépend de quel SI tu veux parler...
Il y a le test pour restreindre les données, qui se met dans la clause WHERE.
Il y a le test pour afficher une donnée ou une autre en fonction d'un test (genre afficher 0 au lieu d'un message d'erreur si un champ n'est pas rempli), c'est la fonction IIF qui se met dans le SELECT
Donc explique ce que tu veux faire.
Il y a le test pour restreindre les données, qui se met dans la clause WHERE.
Il y a le test pour afficher une donnée ou une autre en fonction d'un test (genre afficher 0 au lieu d'un message d'erreur si un champ n'est pas rempli), c'est la fonction IIF qui se met dans le SELECT
Donc explique ce que tu veux faire.
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 11:39
19 févr. 2009 à 11:39
Jai 2 tables lies par le matricule qui sont:
Heures_travaillees:
Matricule
Nom
Prenom
Activite
Mois
Annee
Heures
Accident_travail:
Matricule
Nom
Prenom
DateAccident
MoisEnCours
NbJourArret
Mon but est de mettre dans une table commune:
Matricule
Nom
Prenom
Activite
Mois
Annee
Heures
DateAccident
NbJourArret
sauf que si l'employe n'a pas eu d'accident de travail alors il n'apparait pas dans la table.
Je voudrais faire un SI pour que meme si il n'est pas dans la table Accident_travail alors il recoit 31/12/9999 dans le champs DateAccident et 0 dans le champs NbJourArret
Heures_travaillees:
Matricule
Nom
Prenom
Activite
Mois
Annee
Heures
Accident_travail:
Matricule
Nom
Prenom
DateAccident
MoisEnCours
NbJourArret
Mon but est de mettre dans une table commune:
Matricule
Nom
Prenom
Activite
Mois
Annee
Heures
DateAccident
NbJourArret
sauf que si l'employe n'a pas eu d'accident de travail alors il n'apparait pas dans la table.
Je voudrais faire un SI pour que meme si il n'est pas dans la table Accident_travail alors il recoit 31/12/9999 dans le champs DateAccident et 0 dans le champs NbJourArret
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 11:58
19 févr. 2009 à 11:58
Jai 2 tables liees par le champ Matricule qui sont:
Heures_travaillees:
Matricule
Nom
Prenom
Activite
Heures
Accident_travail:
Matricule
Nom
Prenom
DateAccident
MoisEnCours
NbJourArret
Je veux regrouper ces deux tables dans une autre table mais sa ne m'affiche que ceux presents dans les 2 tables.
Donc mon Si doit faire en sorte que si les employes n'apparaissent pas dans la table Accident_travail alors le champ DateAccident recoit 31/12/9999 et le champs NbJourArret recoit 0
Heures_travaillees:
Matricule
Nom
Prenom
Activite
Heures
Accident_travail:
Matricule
Nom
Prenom
DateAccident
MoisEnCours
NbJourArret
Je veux regrouper ces deux tables dans une autre table mais sa ne m'affiche que ceux presents dans les 2 tables.
Donc mon Si doit faire en sorte que si les employes n'apparaissent pas dans la table Accident_travail alors le champ DateAccident recoit 31/12/9999 et le champs NbJourArret recoit 0
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 12:02
19 févr. 2009 à 12:02
voila ma 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
FROM Heures_travaillees INNER 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;
et voila mes SI:
IIf(Month([Accident_travail]![MoisEnCours])=[Heures_travaillees]![Mois];[Accident_travail]![DateAccident];[DateAccident]=#31/12/9999#)
IIf(Month([Accident_travail]![MoisEnCours])=[Heures_travaillees]![Mois];[Accident_travail]![NbJourArret];0)
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
FROM Heures_travaillees INNER 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;
et voila mes SI:
IIf(Month([Accident_travail]![MoisEnCours])=[Heures_travaillees]![Mois];[Accident_travail]![DateAccident];[DateAccident]=#31/12/9999#)
IIf(Month([Accident_travail]![MoisEnCours])=[Heures_travaillees]![Mois];[Accident_travail]![NbJourArret];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
19 févr. 2009 à 12:35
19 févr. 2009 à 12:35
Alors tu n'es pas sur le bon chemin.
Il faut faire une jointure de type left ou right, ça se fait en cliquant-droit sur la ligne de relation entre les deux tables (lorsque tu crées ta requête) pour modifier le type de jointure. Ensuite, tu mettras les iif dans la clause SELECT.
Ou alors, tu fais en deux fois :
- une requête qui créée les matricules depuis heures_travaillées et qui met les données AT à zéro
- une requête qui met à jour les données depuis accident_travail
en supposant que tous ceux qui sont dans A_T sont aussi dans H_T
Il faut faire une jointure de type left ou right, ça se fait en cliquant-droit sur la ligne de relation entre les deux tables (lorsque tu crées ta requête) pour modifier le type de jointure. Ensuite, tu mettras les iif dans la clause SELECT.
Ou alors, tu fais en deux fois :
- une requête qui créée les matricules depuis heures_travaillées et qui met les données AT à zéro
- une requête qui met à jour les données depuis accident_travail
en supposant que tous ceux qui sont dans A_T sont aussi dans H_T
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 13:27
19 févr. 2009 à 13:27
Sa ne marche toujours pas, j'ai toujours le meme message d'erreur mais cette fois il me selectionne le premier nom de table dans le FROM:
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_travail]![MoisEnCours])=[Heures_travaillees]![Mois],[Accident_travail]![DateAccident],[DateAccident]=#31/12/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;
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_travail]![MoisEnCours])=[Heures_travaillees]![Mois],[Accident_travail]![DateAccident],[DateAccident]=#31/12/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;
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
19 févr. 2009 à 13:33
19 févr. 2009 à 13:33
remplace tes ! par des points et mets des ; comme séparateur d'argument du iif.
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 13:39
19 févr. 2009 à 13:39
Les points virgules ne marchent pas faut mettre des virgules simples et le nouveau message d'erreur est:
Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte.
alors que ma virgule a la fin de mon select est bien présente et il me surligne le FROM
Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte.
alors que ma virgule a la fin de mon select est bien présente et il me surligne le FROM
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
19 févr. 2009 à 13:40
19 févr. 2009 à 13:40
supprime la virgule avant le FROM...
Sagara-kun
Messages postés
34
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
19 mars 2009
1
19 févr. 2009 à 14:16
19 févr. 2009 à 14:16
Erreur et toujours erreur :s :
Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée
'IIf(Month(Accident_travail.MoisEnCours)=Heures_trvaillees.Mois,Accident_travail.NbJourArret,NbJourArret=0)'
comme une partie de la fonction d'agrégat.
Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée
'IIf(Month(Accident_travail.MoisEnCours)=Heures_trvaillees.Mois,Accident_travail.NbJourArret,NbJourArret=0)'
comme une partie de la fonction d'agrégat.
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
19 févr. 2009 à 15:30
19 févr. 2009 à 15:30
colle ta requête...