COMANDO IIF

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem 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
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

COMANDO IIF

Mensagem 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 )
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem 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)
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

COMANDO IIF

Mensagem 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  ')))},;
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem 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 ...
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMANDO IIF

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem por deividdjs »

Vdd ... se torna bem prático mesmo ... Obrigado pela ideia ... Show!!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem por deividdjs »

Pior que só funcionou sem o IIF na última linha ... se eu colocar da erro de sintax ... hehhee vai entender hehehe
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMANDO IIF

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMANDO IIF

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem por deividdjs »

Excelentes comentários... obrigado amigos ...
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

COMANDO IIF

Mensagem 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  '))))},;
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMANDO IIF

Mensagem por deividdjs »

Exatamente assim eu fiz... mais no lugar de outras deixei limpo o campo " " ... thanksss
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Giovany Vecchi
Usuário Nível 1
Usuário Nível 1
Mensagens: 19
Registrado em: 28 Mai 2014 17:32
Localização: Jales / SP

COMANDO IIF

Mensagem 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"}    
Responder