Méthode de recherche et navigation pour VIEWTABLE

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
La méthode `execcmd` surcharge la méthode parente pour fournir une fonctionnalité de recherche et de navigation personnalisée. Elle traite les commandes 'FINDU' pour rechercher dans la colonne `usubjid`, 'FINDS' pour rechercher dans la colonne `subject`, et 'GOTO' pour se déplacer vers une ligne absolue. Si la commande n'est pas reconnue, elle est transmise à la méthode parente (`super`) pour un traitement standard. Le code contient une section commentée qui suggère une fonctionnalité de recherche plus générique ('FINDF') qui a été désactivée.
Analyse des données

Type : EXTERNE


Le code n'charge aucune donnée. Il agit sur un ensemble de données existant qui est affiché dans un composant VIEWTABLE. L'origine de ces données n'est pas spécifiée dans cet extrait de code et est supposée être fournie par le contexte d'exécution de l'application.

1 Bloc de code
METHOD
Explication :
Ce bloc définit la méthode `execcmd` au sein d'une classe SCL (SAS Component Language). Il utilise une série de conditions `if/else if` pour intercepter et traiter des commandes spécifiques (`inCmd`). Pour 'FINDU' et 'FINDS', il construit une chaîne de condition de recherche et appelle la méthode `_findRow` de l'objet courant (`_self_`). Pour 'GOTO', il convertit l'argument en un nombre et appelle `_gotoAbsoluteRow`. Pour toute autre commande, il utilise `call super()` pour invoquer l'implémentation de la méthode parente. La variable `retCode` est mise à 1 pour indiquer que la commande a été traitée avec succès par cette méthode.
Copié !
1execcmd: method
2 
3 inCmd :char
4 RETCODE :num
5 
6 optional=outCmd:char
7;
8*------------------- Find USUBJID --------------------;
9IF upcase(incmd)='FINDU' THEN DO;
10 IF ^missing(outCmd) THEN DO;
11 findlist = 'find(usubjid,"'||strip(outCmd)||'")';
12 _self_._findRow(findlist);
13 END;
14 
15 /* let VT know that we processed the command */
16 RETCODE = 1;
17END;
18 
19*------------------- Find SUBJECT --------------------;
20ELSE IF upcase(incmd)='FINDS' THEN DO;
21 IF ^missing(outCmd) THEN DO;
22 findlist = 'find(subject,"'||strip(outCmd)||'")';
23 _self_._findRow(findlist);
24 END;
25 
26 /* let VT know that we processed the command */
27 RETCODE = 1;
28END;
29 
30*------------------- Find SUBJECT --------------------;
31/* else if upcase(incmd)='FINDF' then do;
32 if ^missing(outCmd) then do;
33 matchvar = scan(outCmd,1);
34 matchval = scan(outCmd,-1);
35 if find(outCmd,'=') then do;
36 if _self_._getColumnAttribute(matchvar,'TYPE') ='C' then findlist = strip(matchvar)||'="'||strip(matchval)||'"';
37 else findlist = strip(matchvar)||'='||strip(matchval);
38 end;
39 else do;
40 findlist = 'find('||strip(matchvar)||',"'||strip(matchval)||'")';
41 end;
42 _self_._findRow(findlist);
43 end; */
44 
45 /* let VT know that we processed the command */
46/* retCode = 1;
47end; */
48*------------------- Goto Specific row --------------------;
49ELSE IF upcase(incmd)='GOTO' THEN DO;
50 
51 obs=INPUT(outCmd, 12.);
52 
53 IF obs > 0 THEN _self_._gotoAbsoluteRow(obs);
54 
55 /* let VT know that we processed the command */
56 RETCODE = 1;
57END;
58 /* otherwise, if command ne 'GOTO' let VIEWTABLE */
59 /* try to process it */
60ELSE call super(_SELF_, '_execCommand', inCmd, RETCODE, outCmd);
61 
62_self_=_self_;
63endmethod;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.