Clipper On Line • Ver Tópico - COMANDO IIF

COMANDO IIF

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

Moderador: Moderadores

 

COMANDO IIF

Mensagempor deividdjs » 07 Fev 2018 09:05

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 .. ??

{||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 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor Kapiaba » 07 Fev 2018 10:30

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 )
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

COMANDO IIF

Mensagempor deividdjs » 07 Fev 2018 10:57

NÃO SERIA UMA FUNÇÃO O QUE ESTOU BUSCANDO ... É ALGO PARA RETORNAR NO MEU TBROWSER ... SEGUE CODIGO:

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 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor Daniel » 07 Fev 2018 11:16

{||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 de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

COMANDO IIF

Mensagempor deividdjs » 07 Fev 2018 12:44

{||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 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor JoséQuintas » 07 Fev 2018 19:39

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()

{ || 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.

{ || 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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

COMANDO IIF

Mensagempor deividdjs » 07 Fev 2018 20:19

Vdd ... se torna bem prático mesmo ... Obrigado pela ideia ... Show!!
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor deividdjs » 07 Fev 2018 20:21

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 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor JoséQuintas » 07 Fev 2018 23:58

Sim, porque o último tá errado.

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:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

COMANDO IIF

Mensagempor JoséQuintas » 08 Fev 2018 00:05

E mais outra opção:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

COMANDO IIF

Mensagempor deividdjs » 08 Fev 2018 05:37

Excelentes comentários... obrigado amigos ...
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor Daniel » 08 Fev 2018 07:16

So arrumado a linha que eu postei

Essa se so tiver estes 4 valores (REAL, GUARANI, DOLAR, PESO)
{||IIF( CC_MOEDA = 'R','REAL   ',IIF(CC_MOEDA = 'G','GUARANI', IIF(CC_MOEDA = 'D','DOLAR  ', 'PESO  ')))},;


Esta se tiver mais uma opção
{||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 de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

COMANDO IIF

Mensagempor deividdjs » 08 Fev 2018 07:44

Exatamente assim eu fiz... mais no lugar de outras deixei limpo o campo " " ... thanksss
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

COMANDO IIF

Mensagempor Giovany Vecchi » 08 Fev 2018 17:35

Pode tentar fazer assim

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"}   
Giovany Vecchi
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 19
Data de registro: 28 Mai 2014 17:32
Cidade/Estado: Jales / SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro