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