Bonjour,
J'ai une petite question concernant les paramètres dans un rapport birt, je m'explique:
Pour pouvoir générer un rapport sur des collaborateurs et leurs differents heures (prestés,congé payé, formation, maladie,...)
Pour cela je suis passé par une fonction qui prend en parametres un id_collaborateur, date_debut, date_fin, et un type (Maladie, Formation...) et qui me renvoi un entier qui correspond au nombre d'heures.
Voila la fonction :
Je souhaite utiliser cette fonction plusieurs fois dans la requete de mon dataset de la maniere suivante:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 CREATE OR REPLACE FUNCTION "public"."count_jours" (id_coll integer, date1 date, date2 date, param text) RETURNS integer AS $body$ DECLARE rec record; result INTEGER; BEGIN result=0; FOR rec IN select * from rapport_activite where id_collaborateur = id_coll and date_rapport_activite between date1 and date2 LOOP IF rec.jour1_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour1_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour2_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour2_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour3_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour3_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour4_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour4_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour5_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour5_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour6_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour6_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour7_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour7_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour8_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour8_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour9_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour9_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour10_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour10_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour11_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour11_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour12_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour12_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour13_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour13_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour14_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour14_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour15_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour15_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour16_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour16_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour17_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour17_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour18_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour18_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour19_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour19_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour20_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour20_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour21_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour21_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour22_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour22_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour23_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour23_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour24_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour24_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour25_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour25_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour26_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour26_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour27_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour27_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour28_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour28_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour29_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour29_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour30_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour30_pm_rapport_activite = param THEN result := result+1; END IF; IF rec.jour31_am_rapport_activite = param THEN result := result+1; END IF; IF rec.jour31_pm_rapport_activite = param THEN result := result+1; END IF; END LOOP; RETURN result; END; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Les "?" correspondent à des dates de début et de fin de période qui reste les même pour chaque appel de la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select nom_collaborateur, prenom_collaborateur, public.count_jours(id_collaborateur,?,?,'MAL') public.count_jours(id_collaborateur,?,?,'FO') public.count_jours(id_collaborateur,?,?,'CP') from collaborateur
Comment faire pour utiliser plusieurs fois un meme parametre?
Peut on définir des "variables globales"?
Merci d'avance![]()
Partager