Método de búsqueda y navegación para VIEWTABLE

Este código también está disponible en: Deutsch English Français
Nivel de dificultad
Principiante
Publicado el :
El método `execcmd` sobrescribe el método padre para proporcionar una funcionalidad de búsqueda y navegación personalizada. Procesa los comandos 'FINDU' para buscar en la columna `usubjid`, 'FINDS' para buscar en la columna `subject`, y 'GOTO' para moverse a una fila absoluta. Si el comando no es reconocido, se pasa al método padre (`super`) para un procesamiento estándar. El código contiene una sección comentada que sugiere una funcionalidad de búsqueda más genérica ('FINDF') que ha sido deshabilitada.
Análisis de datos

Type : EXTERNE


El código no carga ningún dato. Opera sobre un conjunto de datos existente que se muestra en un componente VIEWTABLE. El origen de estos datos no se especifica en este extracto de código y se asume que es proporcionado por el contexto de ejecución de la aplicación.

1 Bloque de código
METHOD
Explicación :
Este bloque define el método `execcmd` dentro de una clase SCL (SAS Component Language). Utiliza una serie de condiciones `if/else if` para interceptar y procesar comandos específicos (`inCmd`). Para 'FINDU' y 'FINDS', construye una cadena de condición de búsqueda y llama al método `_findRow` del objeto actual (`_self_`). Para 'GOTO', convierte el argumento en un número y llama a `_gotoAbsoluteRow`. Para cualquier otro comando, utiliza `call super()` para invocar la implementación del método padre. La variable `retCode` se establece en 1 para indicar que el comando ha sido procesado exitosamente por este método.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.

Documentación relacionada

Aucune documentation spécifique pour cette catégorie.