Ayuda con una consulta
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
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
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
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
