IFF anidados en Setall (error)

160 views
Skip to first unread message

manuelroin

unread,
Aug 24, 2011, 10:17:47 AM8/24/11
to Comunidad de Visual Foxpro en Español
Tengo un problema cuando agrego un IIF anidado dentro del SetAll

Cuando ingreso esto todo funciona con normalidad

This.SetAll("DynamicBackColor","iif(Detcta.Id='X' or
Detcta.Id='P',rgb(202,255,228),;
iif(detcta.id='F',rgb(230,209,237),iif(detcta.id='N',rgb(255,193,193),;
iif(detcta.id='B',rgb(134,193,210),iif(detcta.id='E',rgb(255,255,176),;
iif(detcta.id='S',rgb(215,170,85),iif(detcta.id='C',,)))))))","Column")

Pero cuando meto los RGB dentro del ultimo IIF me sale el error "NO SE
RECONOCE EL VERBO DE COMANDO"

This.SetAll("DynamicBackColor","iif(Detcta.Id='X' or
Detcta.Id='P',rgb(202,255,228),;
iif(detcta.id='F',rgb(230,209,237),iif(detcta.id='N',rgb(255,193,193),;
iif(detcta.id='B',rgb(134,193,210),iif(detcta.id='E',rgb(255,255,176),;
iif(detcta.id='S',rgb(215,170,85),iif(detcta.id='C',rgb(30,144,255),rgb(255,255,255))))))))","Column")


Muchas gracias a quien pueda ayudarme.



Un Saludo

Darío Castillejos

unread,
Aug 24, 2011, 10:26:32 AM8/24/11
to publice...@googlegroups.com

Yo te recomiendo utilizar la función ICASE( ) en lugar de IIF( ), es mas claro y mas entendible.

 

Saludos.

 

-----Mensaje original-----
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de manuelroin
Enviado el: miércoles, 24 de agosto de 2011 09:18 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] IFF anidados en Setall (error)

Walter R. Ojeda Valiente

unread,
Aug 24, 2011, 10:32:33 AM8/24/11
to publice...@googlegroups.com
Y aún muchísimo mejor es llamar a una función que se encargue de la tarea. Es muchísimo más claro y más entendible.

Saludos.

Walter.

Y aún sin novedades del imaginario dios de "extremo".




From: dcasti...@distribuidoralevic.com
To: publice...@googlegroups.com
Subject: RE: [vfp] IFF anidados en Setall (error)
Date: Wed, 24 Aug 2011 09:26:32 -0500

extremo

unread,
Aug 24, 2011, 10:36:34 AM8/24/11
to Comunidad de Visual Foxpro en Español
a mi me ha sucedido muchas veces lo mismo, y la respuesta es simple ,
como la instruccion IIF esta dentro del SetAll y entre comillas , si
tiene problemas , al compilr no te aparecera ningun problemas y en
algunas ocaciones no arroja error el DynamicBackColor ,pero la mayoria
delas veces arroja error OLE con la instruccion DynamicBackColor.

Bendiciones

Te aconsejo que saque afuera la instruccion y la pruebes sin comillas,
o ea como una instruccion directa, si te fnciona, entonces no tendras
problemas al colocarla en el DynamicBackColor
On 24 ago, 10:26, Darío Castillejos
> iif(detcta.id='S',rgb(215,170,85),iif(detcta.id='C',rgb(30,144,255),rgb(255­,

manuelroin

unread,
Aug 24, 2011, 10:44:35 AM8/24/11
to Comunidad de Visual Foxpro en Español
Y como podria generar un codigo aparte para rellenar las grillas de
otros colores

On 24 ago, 09:32, "Walter R. Ojeda Valiente" <w...@hotmail.com> wrote:
> Y aún muchísimo mejor es llamar a una función que se encargue de la tarea. Es muchísimo más claro y más entendible.
>
> Saludos.
>
> Walter.
>
> Y aún sin novedades del imaginario dios de "extremo".
>
> iif(detcta.id='S',rgb(215,170,85),iif(detcta.id='C',rgb(30,144,255),rgb(255 ,255,255))))))))","Column")

Dario_El_Cyber_Gaucho

unread,
Aug 24, 2011, 10:58:31 AM8/24/11
to publice...@googlegroups.com
expr="iif(Detcta.Id='X' or

Detcta.Id='P',rgb(202,255,228),;

iif(detcta.id='F',rgb(230,209,237),iif(detcta.id='N',rgb(255,193,193),;

iif(detcta.id='B',rgb(134,193,210),iif(detcta.id='E',rgb(255,255,176),;

iif(detcta.id='S',rgb(215,170,85),iif(detcta.id='C',,)))))))"


This.SetAll("DynamicBackColor",expr,"Column")

supongo que el codigo esta en el Init del grid...

o bien si no es ningun caso anterior es C por lo que directamente poner rgb(255,255,255)


Dario

El 24/08/2011 11:44 a.m., manuelroin escribi�:


> Y como podria generar un codigo aparte para rellenar las grillas de
> otros colores
>
> On 24 ago, 09:32, "Walter R. Ojeda Valiente"<w...@hotmail.com> wrote:

>> Y a�n much�simo mejor es llamar a una funci�n que se encargue de la tarea. Es much�simo m�s claro y m�s entendible.
>>
>> Saludos.
>>
>> Walter.
>>
>> Y a�n sin novedades del imaginario dios de "extremo".


>>
>> From: dcastille...@distribuidoralevic.com
>> To: publice...@googlegroups.com
>> Subject: RE: [vfp] IFF anidados en Setall (error)
>> Date: Wed, 24 Aug 2011 09:26:32 -0500
>>

>> Yo te recomiendo utilizar la funci�n ICASE(


>> ) en lugar de IIF( ), es mas claro y mas entendible.
>>
>> Saludos.
>>
>> -----Mensaje original-----
>>
>> De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En
>> nombre de manuelroin
>>

>> Enviado el: mi�rcoles, 24 de agosto de 2011 09:18 a.m.
>>
>> Para: Comunidad de Visual Foxpro en Espa�ol

Darío Castillejos

unread,
Aug 24, 2011, 11:00:14 AM8/24/11
to publice...@googlegroups.com

Mira este excelente artículo en PortalFox:

 

http://www.portalfox.com/index.php?name=News&file=article&sid=1829

 

Saludos.

 

 

-----Mensaje original-----
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de manuelroin

Enviado el: miércoles, 24 de agosto de 2011 09:45 a.m.


Para: Comunidad de Visual Foxpro en Español

Asunto: [vfp] Re: IFF anidados en Setall (error)

Walter R. Ojeda Valiente

unread,
Aug 24, 2011, 11:13:21 AM8/24/11
to publice...@googlegroups.com
La forma más correcta es escribir:

This.SetAll("DynamicBackColor", "MiFuncion(MiParámetro)", "Column")

y luego:

FUNCTION MiFuncion
LParameters tnMiParametro
Local lnColor
 
  DO CASE
    CASE tnMiParametro = 1
      lnColor = RGB(0, 0, 0)
    CASE tnMiParemetro = 2
      lnColor = RGB(255, 0, 0)
    ...
  ENDCASE

Return(lnColor)
*
*

Pues como te habrás dado cuenta, esto es muchísimo más fácil de entender que esa cantidad de IFs anidados o ICASEs.

Saludos.

Walter.


> Date: Wed, 24 Aug 2011 07:44:35 -0700
> Subject: [vfp] Re: IFF anidados en Setall (error)
> From: manue...@gmail.com
> To: publice...@googlegroups.com

Marco Plaza

unread,
Aug 24, 2011, 2:04:39 PM8/24/11
to publice...@googlegroups.com
 
Prueba en su lugar esto, es mas corto y fácil de mantener
 
Sólo necesitas colocar los pares de valores separados por espacios en una cadena y extraerlos con una llamada:

colores='F=RGB(202,255,228) N=RGB(230,209,237) B=RGB(255,193,193) E=RGB(134,193,210) S=RGB(255,255,176) C=RGB(215,170,85)'

this.setall('DynamicBackColor',STREXTRACT(colores,detcta.id+'=',' '),'column')

Saludos

Marco Plaza

Hector Kuhn

unread,
Sep 1, 2011, 10:19:35 AM9/1/11
to publice...@googlegroups.com
fijate si esto puede andar


DODEFAULT()

*!*    1 = RGB(115,215,148)            verde
*!*    2 = RGB(255,255,151)            amarillo
*!*    3 = RGB(241,101,41)            rojo
*!*    4 = RGB(0,255,255)            celeste
*!*    5 = RGB(53,154,255)            azul
*!*    6 = RGB(164,82,0)            marron

This.column7.DynamicBackColor ="IIF(Csrauxestado.psrgb<=1,RGB(115,215,148),IIF(Csrauxestado.psrgb=2,RGB(255,255,151),IIF(csrAuxestado.psrgb=3,RGB(241,101,41),IIF(CsrAuxestado.psrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column8.DynamicBackColor ="IIF(Csrauxestado.psrgb<=1,RGB(115,215,148),IIF(Csrauxestado.psrgb=2,RGB(255,255,151),IIF(csrAuxestado.psrgb=3,RGB(241,101,41),IIF(CsrAuxestado.psrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column9.DynamicBackColor ="IIF(Csrauxestado.psrgb<=1,RGB(115,215,148),IIF(Csrauxestado.psrgb=2,RGB(255,255,151),IIF(csrAuxestado.psrgb=3,RGB(241,101,41),IIF(CsrAuxestado.psrgb=5,RGB(53,154,255),RGB(164,82,0)))))"

This.column10.DynamicBackColor="IIF(Csrauxestado.ddrgb<=1,RGB(115,215,148),IIF(Csrauxestado.ddrgb=2,RGB(255,255,151),IIF(csrAuxestado.ddrgb=3,RGB(241,101,41),IIF(CsrAuxestado.ddrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column11.DynamicBackColor="IIF(Csrauxestado.ddrgb<=1,RGB(115,215,148),IIF(Csrauxestado.ddrgb=2,RGB(255,255,151),IIF(csrAuxestado.ddrgb=3,RGB(241,101,41),IIF(CsrAuxestado.ddrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column12.DynamicBackColor="IIF(Csrauxestado.ddrgb<=1,RGB(115,215,148),IIF(Csrauxestado.ddrgb=2,RGB(255,255,151),IIF(csrAuxestado.ddrgb=3,RGB(241,101,41),IIF(CsrAuxestado.ddrgb=5,RGB(53,154,255),RGB(164,82,0)))))"

This.column13.DynamicBackColor="IIF(Csrauxestado.csrgb=4,RGB(0,255,255),RGB(115,215,148))"
Reply all
Reply to author
Forward
0 new messages