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