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