Página 1 de 1

COMANDO IIF

Enviado: 07 Fev 2018 10:05
por deividdjs
Bom dia Amigos ...

Gostaria se pudessem me ajudar com essa sintax ... faz tempo que não programo e surgiu uma situação aqui ...

como executaria este comando corretamente .. ??

Código: Selecionar todos

{||IIF( CC_MOEDA = 'R','REAL   ' .or. CC_MOEDA = 'G','GUARANI' .or. CC_MOEDA = 'D','DOLAR  ' .or. CC_MOEDA = 'P','PESO  ')},; 
com duas situação eu consegui fazer .. agora com quatro já nao tenho ideia ..

Abraço,

Deivid

COMANDO IIF

Enviado: 07 Fev 2018 11:30
por Kapiaba

Código: Selecionar todos

FUNCTION VER_MOEDA( C_MOEDA ) // VINDO DO VALID DO GET DA MOEDA

   LOCAL CC_MOEDA := SPACE(8)

   IF C_MOEDA = 'R'
      CC_MOEDA := 'REAL   '
   ELSEIF C_MOEDA = 'G'
      CC_MOEDA := 'GUARANI'
   ELSEIF C_MOEDA = 'D'
      CC_MOEDA := 'DOLAR  '
   ELSEIF C_MOEDA = 'P'
      CC_MOEDA := 'PESO   '
   ELSE
      CC_MOEDA := "NAO DEFINIDA"
   ENDIF

RETURN( CC_MOEDA )

COMANDO IIF

Enviado: 07 Fev 2018 11:57
por deividdjs
NÃO SERIA UMA FUNÇÃO O QUE ESTOU BUSCANDO ... É ALGO PARA RETORNAR NO MEU TBROWSER ... SEGUE CODIGO:

Código: Selecionar todos

set color to "W+/B+"
@24,00 say replicate("                                                                                 ",26)
@24,00 say PADC("[I]Inc [A]Alt [E]Exc [P]Pesquisa",79)

aCamp := {;
         "CC_CODBAN",;   
         "CC_NOME",;     
	  {||IIF( CC_MOEDA = 'R','REAL   ','DOLAR ')},;      <<------  SE FOSSE DUAS CONDIÇÕES FUNCIONARIA ... SÓ QUE QUERO POR QUATRO 
         "CC_AGENCIA",;  
         "CC_CONTA"}    

aCab := {;
         "C¢d",;          
         "Nome do Banco",;
         "MOEDA",;                    
         "Agˆncia",;      
         "Conta"}        

aPict := {;
         "9999",;                     
         "@!",; 
         "!!!!!!!!!!!!!!!!",;                         
         "@!",;                       
         "@!"}                       

cAlias := "BAN"
nOrdem := "BANCX_01"

db_BAN :=  WIN(03,01,22,78, "* * CADASTRO DE BANCOS / CAIXAS * *", WT_AZUL2BRANCO, WD_AZUL2BRANCO)

DB_CAIXAS_BANCOS( aCab, aCamp, aPict, cAlias, nOrdem, Regra)

COMANDO IIF

Enviado: 07 Fev 2018 12:16
por Daniel

Código: Selecionar todos

{||IIF( CC_MOEDA = 'R','REAL   ',IIF(CC_MOEDA = 'G','GUARANI',IIF(CC_MOEDA = 'D','DOLAR  ', CC_MOEDA = 'P','PESO  ')))},;

COMANDO IIF

Enviado: 07 Fev 2018 13:44
por deividdjs

Código: Selecionar todos

{||IIF(CC_MOEDA = 'R','REAL   ', IIF(CC_MOEDA = 'G','GUARANI', IIF(CC_MOEDA = 'D','DOLAR  ',(CC_MOEDA = 'P','PESO   '))))},;
deu certo Daniel ..estava faltando um parentese somente ..

Obrigado ...

COMANDO IIF

Enviado: 07 Fev 2018 20:39
por JoséQuintas
Uma dica que talvez possa facilitar em outras situações: o codeblock não precisa ser numa linha só.
Inclusive deu pra localizar coisa errada, o último faltou iif()

Código: Selecionar todos

{ || iif( CC_MOEDA = 'R', ;
            'REAL ', ;
            iif( CC_MOEDA = 'G', ;
               'GUARANI', ;
               iif( CC_MOEDA = 'D', ;
                  'DOLAR ', ;
                  (CC_MOEDA = 'P', ;
                  'PESO '))))},;
Mas eu usaria uma função ou algo parecido, pra ficar mais fácil de ajustar.

Código: Selecionar todos

{ || NomeMoeda( CC_MOEDA ) }

FUNCTION NomeMoeda( cMoeda )

   LOCAL cRetorno := "", nItem
   LOCAL aMoedas := { ;
      { "R", "REAL" }, ;
      { "G", "GUARANI" }, ;
      { "D", "DOLAR" }, ;
      { "P", "PESO" } }

   nItem := AScan( aMoedas, { | x | x[ 1 ] == cMoeda } )
   IF nItem != 0
      cRetorno := aMoedas[ nItem, 2 ]
   ENDIF
   RETURN cRetorno
Também dá pra colocar a função direto no codeblock, mas pra que complicar.... NomeMoeda() pode usar em outros lugares do aplicativo.

COMANDO IIF

Enviado: 07 Fev 2018 21:19
por deividdjs
Vdd ... se torna bem prático mesmo ... Obrigado pela ideia ... Show!!

COMANDO IIF

Enviado: 07 Fev 2018 21:21
por deividdjs
Pior que só funcionou sem o IIF na última linha ... se eu colocar da erro de sintax ... hehhee vai entender hehehe

COMANDO IIF

Enviado: 08 Fev 2018 00:58
por JoséQuintas
Sim, porque o último tá errado.

Código: Selecionar todos

iif( CC_MOEDA = 'D', ;
                  'DOLAR ', ;
                  (CC_MOEDA = 'P', ;
                  'PESO '))))},;
Só comentário adicional: o que passei foi o mesmo que o Kabiaba passou, uma função pra fazer a "tradução".


Outra opção:

Código: Selecionar todos

function main()

   LOCAL bCode, cMoeda := "D"

   bCode := { || iif( cMoeda $ "RGDP", { "REAL", "GUARANI", "DOLAR", "PESO" }[ At( cMoeda, "RGDP" ) ], "" ) }
   ? Eval( bCode )
   Inkey(0)

   RETURN NIL

COMANDO IIF

Enviado: 08 Fev 2018 01:05
por JoséQuintas
E mais outra opção:

Código: Selecionar todos

function main()

   LOCAL bCode, cMoeda := "D"

   bCode := { ||
      DO CASE
      CASE cMoeda=="R" ; RETURN "REAL"
      CASE cMoeda=="G"; RETURN "GUARANI"
      CASE cMoeda=="D"; RETURN "DOLAR"
      CASE cMoeda=="P"; RETURN "PESO"
      ENDCASE
      RETURN ""
      }
   ? Eval( bCode )
   Inkey(0)

   RETURN NIL

COMANDO IIF

Enviado: 08 Fev 2018 06:37
por deividdjs
Excelentes comentários... obrigado amigos ...

COMANDO IIF

Enviado: 08 Fev 2018 08:16
por Daniel
So arrumado a linha que eu postei

Essa se so tiver estes 4 valores (REAL, GUARANI, DOLAR, PESO)

Código: Selecionar todos

{||IIF( CC_MOEDA = 'R','REAL   ',IIF(CC_MOEDA = 'G','GUARANI', IIF(CC_MOEDA = 'D','DOLAR  ', 'PESO  ')))},;
Esta se tiver mais uma opção

Código: Selecionar todos

{||IIF( CC_MOEDA = 'R','REAL   ',IIF(CC_MOEDA = 'G','GUARANI',IIF(CC_MOEDA = 'D','DOLAR  ', IIF( CC_MOEDA = 'P','PESO  ', 'OUTRAS  '))))},;

COMANDO IIF

Enviado: 08 Fev 2018 08:44
por deividdjs
Exatamente assim eu fiz... mais no lugar de outras deixei limpo o campo " " ... thanksss

COMANDO IIF

Enviado: 08 Fev 2018 18:35
por Giovany Vecchi
Pode tentar fazer assim

Código: Selecionar todos

aCamp := {;
         "CC_CODBAN",;   
         "CC_NOME",;     
         <||
           LOCAL cRetMoeda := ""
           IF CC_MOEDA = 'R'
              cRetMoeda := 'REAL   '
           ELSEIF CC_MOEDA = 'G'
              cRetMoeda := 'GUARANI'
           ELSEIF CC_MOEDA = 'D'
              cRetMoeda := 'DOLAR  '
           ELSEIF CC_MOEDA = 'P'
              cRetMoeda := 'PESO   '
           ELSE
              cRetMoeda := "NAO DEFINIDA"
           ENDIF
        RETURN( cRetMoeda )
         > ,;
         "CC_AGENCIA",;  
         "CC_CONTA"}