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
Salut, me revoilà avec un problème plus complexe. J'ai créé une base de données Access pour la gestion de lycée, et je suis à la fin du processus. Je voudrais créer un code qui me permettra de modifier la classe des passants. Pour cela j'ai créer une requête qui contient la classe actuelle de l'élève, la moyenne générale et la classe supérieure dans laquelle il passe. Ensuite, j'ai essayer d'exécuter une requête mise a jour qui devait a priori changer la classe actuelle par la classe supérieure si la moyenne générale >=10.
Mais, j'ai un message du genre"l'opération doit utiliser une requête qui peut être mis à jour".
Donc j'ai désespérément besoin de votre aide parce que je suis à court d'idées ????????????
A voir également:

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
bonjour,
peux-tu donner suite, ou marquer comme résolues, tes discussions précédentes?
0
Miniterminus
14 nov. 2021 à 08:21
Salut, j'avais déjà marqué résolu ce qui l'était.
0
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
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.
0
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
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...

0