Bonjour à tous, je vous explique mon probleme:
J'ai 3 tables :
etudiant (numetud,nom, prenom, datenaiss, civilite, patronyme, numinsee, adresse)
inscription (numetud, codmod,dainsc,numtd)
resultat (numetud,codmod,codexam,note)
Je travail avec l'application Forms 10g et la table resultat contient 1 case (élément texte) qui est mention.
J'ai créée une vue moyenne qui m'affiche la moyenne generale d'un etudiant grace à son numetud. Elle marche correctement est la moyenne s'affiche dans la colonne moy. Voici la vue:
Puis , grace a la moyenne j'affiche la mention, voici son script:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE VIEW MOYENNE AS SELECT e.numetud, e.nom, r.codmod, round(avg(r.note),2) moy FROM etudiant e, resultat r WHERE e.numetud = r.numetud GROUP BY e.numetud, e.nom; J'ai créée la fonction mention d'un etudiant. Voici la fonction qui marche correctement:
Mon probleme est le suivant: j'ai créé un bouton "resultat de l'etudiant" et je veux qu'en inserant le numetud et le codmod de la table resultat et en clickan sur le bouton que j'obtienne la suite des infos sur l'etudiant (càdire codexam,note) ainsi que la mention qui saffiche automatiquement. Dans le code PL/SQL "When-Button-Pressed" du bouton j'ai mis le script suivant qu'il faut completer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 CREATE OR REPLACE FUNCTION mention (v_numetud number, v_codmod number) RETURN varchar2 IS v_moyenne decimal; begin SELECT round(avg(r.note),2) AS moy INTO v_moyenne FROM resultat r WHERE r.numetud = v_numetud AND r.codmod = v_codmod GROUP BY r.numetud, r.codmod; IF v_moyenne < 10 then RETURN('Ajourne'); end IF; IF v_moyenne >= 10 AND v_moyenne < 12 then RETURN('Passable'); end IF; IF v_moyenne >= 12 AND v_moyenne < 14 then RETURN('Assez bien'); end IF; IF v_moyenne >= 14 AND v_moyenne < 16 then RETURN('Bien'); end IF; IF v_moyenne >= 16 AND v_moyenne < 18 then RETURN('Tres bien'); end IF; IF v_moyenne >= 18 AND v_moyenne < 20 then RETURN('Excellent'); end IF; end; /
Faut-il mettre ma fonction mention dans une unité de programme ou seulement l'executer dans isqlplus ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 begin select numetud, codmod, codexam, note into :resultat.numetud, :resultat.codmod, :resultat.codexam, :resultat.note from resultat where numetud = :resultat.numetud and codmod= :resultat.codmod; -- Par la suite je ne sais pas quel procédé utiliser pour faire intervenir la -- moyenne et mention. exception when no_data_found then message('Invalid student id: please enter valid id.'); raise form_trigger_failure; end;
Quequ'un à t-il une solution svp ?
Merci pour votre aide.
Partager