Page 1 sur 1

exploitation d'informations d'une vue : comment faire ?

MessagePublié: 16 Oct 2012 à 16:32
par Eric SIVOA
Bonsoir,

J'ai constitué la vue suivante via une routine LotusScript.
Avec les champs :
yearmoisrepas (champ catégorisé) : par exemple 201210
nomagentrepas : par exemple "Berlier Yann" et "Briteau Sophie"
daterepas1_v2 : par exemple "Berlier Yann, ,X,X, ,X" et "Briteau Sophie, , , , "
daterepas2_v2 : par exemple "Berlier Yann, ,X,X, ,X" et "Briteau Sophie,X,X, ,X, "
daterepas3_v2 : par exemple "Berlier Yann, ,X,X, ,X" et "Briteau Sophie, , , ,"
daterepas4_v2 : par exemple "Berlier Yann, ,X,X, ,X" et "Briteau Sophie, , , ,"
daterepas5_v2 : par exemple "Berlier Yann, ,X,X, ,X" et "Briteau Sophie, , , ,"
totalmensuel_v2 : par exemple "Berlier Yann Novembre 2012;15;30"

"Berlier Yann, ,X,X, ,X" : s'il y a un " " cela veut dire que Berlier Yann n'a pas mangé à la cantine, un "X" il y a mangé

Par semaine, je veux faire apparaître dans un rapport les personnes qui ont mangé à la cantine et quels jours

soit un tableau du style :

Code : Tout sélectionner
Semaine 1          lundi  mardi  mercredi jeudi vendredi

Agents
Berlier Yann     abs.     X         X      abs      X


Pour la semaine 2 cela devient

Code : Tout sélectionner
Semaine 2          lundi  mardi  mercredi jeudi vendredi

Agents
Berlier Yann     abs.     X         X     abs      X
Briteau Sophie     X        X       abs     X       abs


J'ai mis des abs pour absent (dans mon vrai masque la colonne sera non renseignée) et des X pour présent (dans mon vrai masque j'aurai simplement un X pour présent)
comment faire cela ?
Je suppose avec des formules ?

Dans l'ancien masque que je dois remplacer par un nouveau similaire, j'avais les champs suivants

Code : Tout sélectionner
Dans l'ancien masque j'avais en colonne 1 le champ TLA_1 avec comme formule

cle := ANNEE+MOIS;
Liste := @DbLookup( "" : "" ; @DbName; "MOISCANTINE" ; cle; 3 ; [FailSilent] );
@Transform(Liste;"x"; @If(!@Contains(x;"NEANT"); x ; @Nothing))

TLA_2_NOM :
n := 1;
@While(n <= @Elements(TLA_2);
Nom := TLA_2[n];
@If (Nom != "";Liste := Liste:Nom ;@Nothing);
n := n + 6);
Liste

Sur la colonne Lundi :
1) une valeur calculée
JF := LUN_2 ;
@If (@IsNull(JF);" ";
@Text(@DbLookup("":"";@DbName;"Jours fériés";@Date(JF);2;[FailSilent])))

2) le champ REPAS_LUN_2 (calculé à l'affichage)
n := 2;
@While(n <= @Elements(TLA_2);
Repas := @Text(TLA_2[n]);
Liste := Liste:Repas ;
n := n + 6);
Liste

3) le champ TOT_LUN_2 (nombre calculé)
n := 1;
Repas := 0 ;
@While (n <= @Elements ( REPAS_LUN_2 ) ;
                  @If ( REPAS_LUN_2[n] = "X" ; Repas := Repas+1 ; @Nothing);
                  n := n + 1);
Repas

et ainsi de suite pour les autres colonnes (mardi, mercredi, jeudi, vendredi)


Merci d'avance,
(j'ai réussi le plus difficile avec le codage en Lotus Script, maintenant il me reste cette vue à programmer, et comme il n'y a pas de debug, c'est plus dur)

Re: exploitation d'informations d'une vue : comment faire ?

MessagePublié: 18 Oct 2012 à 16:30
par Eric SIVOA
J'ai un peu avancé sur mon développement.

Voici ce que j'ai pour le champ calculé TLA_2 :
Code : Tout sélectionner
cle := ANNEE + MOIS;
Liste := @DbLookup( "" : "" ; @DbName; "MOISCANTINEv2" ; cle; 4 ;  [FailSilent] );
@Transform(Liste;"x"; @If(!@Contains(x;"NEANT"); x ; @Nothing))


Sachant que mes noms dans la vue sont du type Louis Harmand,X,X,X , X (par exemple), j'ai testé qu'il y avait au moins un X dans le champ
soit :

Code : Tout sélectionner
n := 1;
@While(n <= @Elements(TLA_2);
Longueur := @Length(TLA_2[n]);
Presence := @Right(TLA_2[n];10);
Nom := @Left(TLA_2[n];Longueur-10);

LUN := @Middle(Presence;1;1);
MAR := @Middle(Presence;3;1);
MER := @Middle(Presence;5;1);
JEU := @Middle(Presence;7;1);
VEN := @Middle(Presence;9;1);

@If (Nom != "" & (LUN = "X"  | MAR = "X" | MER = "X" | JEU = "X" | VEN = "X" ) ;Liste := Liste:Nom ;@Nothing);
n := n + 1);
Liste


En testant ce programme de formules, j'obtiens bien toutes les personnes qui prennent au moins un repas dans la semaine.

Je veux maintenant afficher les X
donc je fais pareil, sauf que ça ne marche pas et que je ne comprends pas.
Je fais pourtant comme pour le précédent programme :

Code : Tout sélectionner
n := 1;
@While(n <= @Elements(TLA_2);
Longueur := @Length(TLA_2[n]);
Presence := @Right(TLA_2[n];10);
LUN := @Middle(Presence;1;1);
Repas := @Text(LUN);
Liste := Liste:Repas ;
n := n + 1);
Liste


Comme résultat, je n'ai que des blancs.
Je ne vois pas ce qu'il peut manquer