Problema con anidamiento - IIF/ICASE

Estimados, buenos días.

Tengo un problema al anidar varias sentencias ya sea con IIF o con ICASE en una sola línea de código, hasta 5 niveles trabaja a la perfección, pero cuando agrego un nivel mas no funciona mas, no da error, pero no hace lo que corresponde.

Alguien tiene idea si hay un límite de 5 niveles de anidamiento, a mi modesto entender no debería haberlo.

A continuación les paso el ejemplo en el que tengo el problema.

(He usado macros porque me daba error en la extensión de caracteres en la sentencia.)

This.Column7.dynamicbackcolor="ICASE(&E='A',&VA,&E='POR',&VX,&E='P',&VP,&E='R',&VG,&E='D',&VD,&E='G',&VG)"
This.Column9.dynamicbackcolor="IIF(&E='A',&VA,IIF(&E='POR',&VX,IIF(&E='P',&VP,IIF(&E='G',&VG,IIF(&E='R',&VR,&VD)))))"

Pongo los dos ejemplos porque con los 2 tengo el mismo problema.

Sacando la última comprobación, en el primer caso ",&E='G',&VG" funciona perfectamente...

Espero alguna mano con esto y si no se puede resolver escucho alternativas !!

Para mas info uso VFP9 y esta sentencia pertenece a un grid con 13 columnas, las que deben ser coloreadas según la condición de la macro &E.

Saludos y MUCHAS GRACIAS

1 respuesta

Respuesta
1

El tema de colorear lineas del grid es muy interesante. Te dejare un link para que veas como se logra este efecto, en base a una condición establecida! :D

<a>http://www.portalfox.com/index.php?name=News&file=article&sid=1829&mode=nested&order=0&thold=0</a>

Aquí va otro

<a>https://groups.google.com/forum/?fromgroups=#!topic/publicesvfoxpro/iKrVvjyi1_s</a>

Saludos. Cualquier cosa, me avisas! :D :D

Ravenn :D :D

Estimado Experto:

Muchas Gracias por tu tiempo, voy a revisar los ejemplos que me pasaste, pero a simple vista noto que no son referidos a mi consulta, mi intención es la "anidación" de iif, puesto que esto lo necesito en varias partes del sistema.

Nuevamente te agradezco la ayuda.

Saludos.

Ahhh... como escribiste: "Para mas info uso VFP9 y esta sentencia pertenece a un grid con 13 columnas, las que deben ser coloreadas según la condición de la macro
&E." pensé que necesitabas colorear los registros de un grid! XDXDXXDXDXD

La función ICASE() admite mas de 5 parámetros. Admite hasta 100 parámetros. Es mas dinámica que IIF(). Si no te da resultado para colorear los registros del grid, debe ser por alguna incongruencia en alguna linea de tu código o parámetro.

Hola, es lo que pensé, "debe haber algún problema con la lógica", pero intenté cambiar el orden de las consultas y da lo mismo, evidentemente si lo pruebo con 5 niveles anda perfecto, al hacerlo con 6 deja de funcionar, pero no da error... el grid se presenta en blanco independientemente de la condición de &E, es verdaderamente extraño...

Muchas Gracias por tu tiempo.

¿La condición &E que representa? ¿OO? Tal vez ahí esta el pegon! ¿Qué es lo que pretendes colorear y en base a que parametro?

Perdón que no incluí esa información en el ejemplo.

La variable E (usada como Macro) es un campo character de 1 en un cursor, que dependiendo de letra que traiga debe asignar un color al campo de un grid.

Las demás variables hacen referencia a los colores que deben adoptar según la letra.

El Ejemplo Completo:

Public E, vA, vX, vD, vG, vP, vR

E = cursor1.estado

vA = 'RGB(192,192,192)'

vX = 'RGB(130,130,130)'

vD = 'RGB(255,255,255)'

vG = 'RGB(0,255,0)'

vP = 'RGB(0,0,255)'

vR = 'RGB(255,0,0)

This.Column7.dynamicbackcolor="ICASE(&E='A',&VA,&E='POR',&VX,&E='P',&VP,&E='R',&VR,&E='D',&VD,&E='G',&VG)"

Este código va en el INIT del GRID y busco con el mismo que la columna 7 se coloree según el valor del campo.

Espero haber sido claro, sino te paso mas datos.

Nuevamente, muchas gracias por tu ayuda.

Mil disculpas, omití un par de cosas.

Al asignar el valor a E, va entre comillas... para que actúe la macro.

E = 'cursor1.estado'

El ejemplo funciona si le saco cualquiera de las condiciones, por ejemplo:

&E='D',&VD,

La última, donde dice POR, debe decir R solamente, el corrector me desacomoda... je je.

Gracias de nuevo.

En la ultima variable, tienes:

vR = 'RGB(255,0,0)

Te falta un apostrofe de cierre ' al final. Verifica eso. mmm... es extano. Todo esta bien. :/ Prueba pasar las variables a locales! En lugar de PUBLIC usa LOCAL... mmm tal vez en algún lugar de laaplicacion cambias el valor de la variable publica y ahí da el error! :O Avisame!

Hola, gracias por responder, en el código figura el apostrofe.

Evidentemente no es un error de sintaxis porque no da ningún error, simplemente no realiza la acción solicitada... (con los 6 anidamientos) pero con 5 funciona perfecto... es mas que extraño... sigo sin poder hacerlo funcionar, si te sirve puedo enviarte el form standalone para que lo veas...

Gracias de nuevo.

Envíamelo a

[email protected]

Recuerda enviar el form con todas las tablas que tengas en el dataenviroment. No te preocupes. Discresion absoluta de datos!

Recuerda entonces finalizar la pregunta. Envía el correo primero y cuando me llegue, te avisare, para que así cierres la pregunta. :)

Saludos! :D

No olvides finalizar la pregunta. Vere tu proyecto!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas