Página 1 de 2
transform()
Enviado: 04 Fev 2008 12:36
por Netavin
Bom dia a todos!
... ainda de ressaca ?!
Quando voltarem a si novamente(rs), gostaria que me dessem informação a respeito do uso do transform(). Ocorre o seguinte: num total de coluna de valores, ora o resultado fica posicionado na coluna X, outra ora ele se posiciona na coluna Y. Varia de acordo com o tamanho do resultado...;
para um valor cujo total seja 10.000,00 ele se posiciona numa coluna; se o resultado é 100,00 ele se posiciona em outra coluna.
Como posso controlar isso ?
Boa folia para todos!
Grato!
Netavin
Enviado: 04 Fev 2008 12:47
por Clipper
Tá estranho isso !
Se você está usando da forma comum deveria sempre posicionar na mesma coluna.
@ 10,50 SAY TRANSFORM(VALTOT,"@E 999,999,999.99")
Como exatamente você está usando, tem algum TRIM, LTRIM ou outra função em uso conjunto ?
Até logo.
Marcelo
Enviado: 04 Fev 2008 12:53
por Netavin
oi colega clipper.
Estou usando nos relatórios de impressão, assim:
? "total: " + transform(vari, "@e 99,999.999").
[]´s
Netavin
Enviado: 04 Fev 2008 13:06
por Clipper
Prezado colega
Eu nunca fui muito adepto do uso do ?, para saídas formatadas recomendo o uso do @ SAY, com ele não tem erro.
Mas o uso do TRANSFORM está correto teóricamente não deveria dar esse erro.
Até logo.
Marcelo
Re: transform()
Enviado: 04 Fev 2008 14:08
por Maligno
Netavin escreveu:para um valor cujo total seja 10.000,00 ele se posiciona numa coluna; se o resultado é 100,00 ele se posiciona em outra coluna.
Como posso controlar isso ?
Quando a impressão precisa ter uma largura fixa, pode-se usar a função PadL() com um valor de largura X, tal que, números convertidos
e/ou strings formatadas com máscaras diferentes, com largura menor, ganham espaços adicionais à esquerda para terem a largura X especificada. Mais detalhes, procure pela função PAD() no NG.
Veja que isso serve para máscaras diversas. Se forem apenas números, uma forma mais fácil e prática é usar sempre a mesma máscara para a conversão.
Enviado: 06 Fev 2008 13:12
por gvc
Pode ser assim tb:
@ 10,50 SAY valtot picture "@E 999,999,999.99"
O padr / padl / padc não é necessário. A picture já coloca os espaços em branco.
Eu tb uso o ? e funciona normalmente.
Vc esta pondo 3 casas decimais (? "total: " + transform(vari, "@e 99,999.999").
Quais os valores que não estão saindo no lugar correto?
Enviado: 06 Fev 2008 13:18
por Maligno
O padr / padl / padc não é necessário. A picture já coloca os espaços em branco.
Sim, não é necessário. Mas, conforme eu frisei, se houver alguma outra coisa que não números, será necessário usar a função PadL().
ou assim ....
Enviado: 06 Fev 2008 13:24
por adilson
@linha,if(valor >100,colunax,colunay) say valor pict "@e 999,999.99"
Enviado: 06 Fev 2008 14:25
por Netavin
olá gvc !!!
Antes de mais nada, quero dizer que estou falando do ponto decimal.
estou usando assim:
? alltrim(transform(variavel, "@e 999.999".
Os resultados estão se alinhando da seguinte forma:
4,645
14,810
102,764
se acontecer do total ter 3 casas antes do ponto decimal, fica como demonstado acima.
Grato!
Netavin
Transform
Enviado: 06 Fev 2008 15:05
por Adalberto
Netavin,
A função ALLTRIM e a causa da falta de alinhamento.
Tire ela e tudo bom.
Da certo
Enviado: 06 Fev 2008 15:08
por Netavin
ok Adalberto....
vou ver isso então! Retorno depois com o resultado.
Grato !
Obrigado a todos!
Netavin
Enviado: 06 Fev 2008 15:24
por Maligno
Pode ter certeza. A função ALLTRIM() é a culpada pelo "corte" dos espaços, pois o resultado da função TRANSFORM() sempre tem a largura fixada pela máscara. Se a máscara é a mesma,...
Enviado: 06 Fev 2008 18:38
por gvc
Achamos o culpado?
Então bate na cara dele e tira fora. Não espera nem ele pedir para sair.
A função alltrim() tira todos os espaços em branco do inicio e fim da sua string. Esse é o motivo de estar desalinhando seu relatório.
Enviado: 07 Fev 2008 12:42
por Netavin
... Valeu "Superamigos" !!
Vou bater de frente !
[]´s
Netavin
Enviado: 07 Fev 2008 12:46
por Clipper
Veja o que eu tinha dito desde o inicio...
Clipper escreveu:Se você está usando da forma comum deveria sempre posicionar na mesma coluna.
@ 10,50 SAY TRANSFORM(VALTOT,"@E 999,999,999.99")
Como exatamente você está usando, tem algum TRIM, LTRIM ou outra função em uso conjunto ?
Até logo.
Marcelo