Ayuda con una consulta

Grisel
25 de Noviembre del 2004
Hola a todos, tengo un problema que es el siguiente:
Tengo un cursor que me trae el resultado de una consulta, este cursor siempre me trae un solo registro con 13 campos, tengo que evaluar esos trece campos para activarle ciertos permisos al usuario la cuestion es como lo hago por una via que sea mas rapida que la estructura de If .. endif ya que con esta debo realizar demasiadas combinaciones. Gracias

ABC
25 de Noviembre del 2004
Tu pregunta tiene muchas variantes/interpretaciones

Segun interpreto, debes crear una funcion :
Una forma más simple es asegúrate de que los campos del cursor tengan nombres prefijos afines y entonces usa una operación de macro

Ejemplo de los campos del cursor

CAMPO01, CAMPO02, CAMPO03 ...CAMPO13
(Como sabes, esto se logra cuando colocas “AS” en la operación del select para el cursor”

Luego realiza tu función recibiendo por ejemplo el numero del campo así

FUNCTION TUSABRAS
PARAMETERS QCAMPO

STORE “CAMPO”+PADL(QCAMPO,2,”0”)) TO XVAR

IF &XVAR .....

ENDIF
...
RETURN ....

En esta forma la función solo recibe un valor (numero del campo) y podrás aplicarla a cada uno de ellos sin mas código. Lógicamente acorde con tus intenciones, un “CASE” podría también ser usado en lugar del “IF”

Si por si acaso no prefieres usar campos con igual prefijo, entonces manda directamente
El nombre del campo así:
FUNCTION TUSABRAS
PARAMETERS QCAMPO

IF &QCAMPO .....
...
ENDIF
RETURN .....

Esto permitirá que la función reciba el nombre del campo que tu deseas

Si posteriormente quieres hacer algo mas complejo podrias :
DECLARE RESULT(13) && O FCOUNT() Según la situacion
FOR I = 1 TO 13
RESULT(I) = TUSABRAS(I)
ENDIF
...
IF RESULT(1) .....
ENDIF

BYE