SOS Code
Fermé
Miniterminus
-
13 nov. 2021 à 18:10
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 4 déc. 2021 à 08:46
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 4 déc. 2021 à 08:46
A voir également:
- Soscode
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
3 réponses
yg_be
Messages postés
23359
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
13 nov. 2021 à 21:12
13 nov. 2021 à 21:12
bonjour,
peux-tu donner suite, ou marquer comme résolues, tes discussions précédentes?
peux-tu donner suite, ou marquer comme résolues, tes discussions précédentes?
yg_be
Messages postés
23359
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
14 nov. 2021 à 10:20
14 nov. 2021 à 10:20
peux-tu partager le texte des sources SQL de tes requêtes?
n'hésite pas à nommer tes requêtes, c'est plus clair pour communiquer.
tu peux tester si la première requête autorise la mise à jour: il suffit de l'exécuter, et de tenter de faire une modification dans les données affichées.
n'hésite pas à nommer tes requêtes, c'est plus clair pour communiquer.
tu peux tester si la première requête autorise la mise à jour: il suffit de l'exécuter, et de tenter de faire une modification dans les données affichées.
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
4 déc. 2021 à 08:46
4 déc. 2021 à 08:46
Bonjour tout le monde ! (Ca fait un bail que j'étais pas venue ici, moi...)
A partir du moment où tu utilises plusieurs tables un regroupement sur une donnée située dans une table située du côté "plusieurs" de la relation dans une requête, elle ne sera plus utilisable pour une mise à jour.
Il y a un critère très simple pour le savoir : Si, en mode aperçu, le bouton "Ajouter un enregistrement" (en bas de la requête) est indisponible, c'est que ta requête ne pourra pas être transformée en requête "Action" (Ajout, suppression, mise à jour)
La solution existe.
1 - Tu crées une liste des élèves passant en classe supérieure. Cette requête ne doit renvoyer QUE leur identifiant, pas leur moyenne. UNE SEUL champ, c'est très important.
Tu fais donc une requête qui, pour chaque IDENTIFIANT d'élève, calcule la moyenne et filtre les résultats supérieurs à 10. Tu décoches cette colonne moyenne et tu copies le SQL (La mienne ça donne ça) :
SELECT Notes.N°Elève FROM Notes GROUP BY Notes.N°Elève HAVING (((Avg(Notes.Note))>10));
Ensuite, tu crées une autre requête pour la mise à jour, et dans le critère de l'identifiant de l'élève, tu mets ta requête dans une insctruction IN()
Ça donne :
IN(SELECT Notes.N°Elève FROM Notes GROUP BY Notes.N°Elève HAVING (((Avg(Notes.Note))>10));)
Et ça marche...
A partir du moment où tu utilises plusieurs tables un regroupement sur une donnée située dans une table située du côté "plusieurs" de la relation dans une requête, elle ne sera plus utilisable pour une mise à jour.
Il y a un critère très simple pour le savoir : Si, en mode aperçu, le bouton "Ajouter un enregistrement" (en bas de la requête) est indisponible, c'est que ta requête ne pourra pas être transformée en requête "Action" (Ajout, suppression, mise à jour)
La solution existe.
1 - Tu crées une liste des élèves passant en classe supérieure. Cette requête ne doit renvoyer QUE leur identifiant, pas leur moyenne. UNE SEUL champ, c'est très important.
Tu fais donc une requête qui, pour chaque IDENTIFIANT d'élève, calcule la moyenne et filtre les résultats supérieurs à 10. Tu décoches cette colonne moyenne et tu copies le SQL (La mienne ça donne ça) :
SELECT Notes.N°Elève FROM Notes GROUP BY Notes.N°Elève HAVING (((Avg(Notes.Note))>10));
Ensuite, tu crées une autre requête pour la mise à jour, et dans le critère de l'identifiant de l'élève, tu mets ta requête dans une insctruction IN()
Ça donne :
IN(SELECT Notes.N°Elève FROM Notes GROUP BY Notes.N°Elève HAVING (((Avg(Notes.Note))>10));)
Et ça marche...
14 nov. 2021 à 08:21