transform()
Moderador: Moderadores
transform()
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
... 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
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
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
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
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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
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
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Re: transform()
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.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 ?
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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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?
@ 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?
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
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().O padr / padl / padc não é necessário. A picture já coloca os espaços em branco.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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
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
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
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,...
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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.
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.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
Veja o que eu tinha dito desde o inicio...
Marcelo
Até logo.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 ?
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)



