Página 1 de 1

Transformar uma variavel numerica, em texto sem (.) e (,)

Enviado: 01 Mai 2005 20:46
por Ricardo Sales Ribeiro
:(

Boa Noite amigos clipeiros.

Gostaria de uma ajuda, acho q é bem simples, más no momento não estou conseguindo fazser. É o seguinte:

Preciso transformar uma variavel numerica de duas casas decimais em uma tipo texto sem o ponto flutuante e sem a virgula.

Tipo 123.456,78 numerica valor

Quero q fique 12345678 texto

Um cliente estar me pedindo para gerar um relatorio para Secretaria da fazendo, e uma das exegencias e esta os valores não podem ser separados por (,) ou (.) a Sefaz exige um campo com 13 caracteres e 2 decimais, no formato texto.

Como fazer ?

Ricardo Sales Ribeiro
Fortaleza-Ce

Enviado: 01 Mai 2005 21:40
por Toledo
Ricardo,

Segue abaixo um exemplo do que você pode fazer:

Código: Selecionar todos

nValor:=123456.78
cValor:=STR(nValor*100,13,0)
No caso acima, o valor vai ficar alinhado à direita e com espaços em branco à esquerda.
Agora uma observação, geralmente os layout dos arquivos textos enviados para a Secretaria da Fazenda, os campos numéricos tem que ter zeros à esquerda, se este for o seu caso, você então tem que fazer o seguinte:

Código: Selecionar todos

nValor:=123456.78
cValor:=STRZERO(nValor*100,13)
Abraços,

Enviado: 01 Mai 2005 21:58
por Ricardo Sales Ribeiro
Amigo Toledo
Boa Noite


Obrigado pela ajuda, já vou fazer as alterações.


Ricardo Sales :xau

Transformar numero em texto.

Enviado: 01 Mai 2005 22:03
por gavel
Muito simples

Ex.:

Código: Selecionar todos

clea
numero=0   // UM NUMERO QUALQUER
clea
numero=0
Do while .t.
   @ 01,01 say "Digite um Valor:" get numero pict "@E 999,999.99"
   Setcursor(1); read; setcursor(0)
   If lastkey()=27
      exit
   Endif
   If !empty(numero)  // CASO O NUMERO NÃO ESTEJA VAZIO
      numero=alltrim(str(numero)) // TRANSFORME EM TEXTO
      numnovo=""                         // VARIAVEL QUE RECEBERA O TEXTO
      For conta=1 to len(numero)   // CONTO O TAMANHO DO NUMERO
         If subst(numero,conta,1)="," .or. subst(numero,conta,1)="." // SE
              EXISTIR UM PONTO OU UM VÍRGULA
           numnovo=numnovo+subst(numero,conta+1,1)
         Else  // SE NAO ELE PEGA OS CARACTERES 
           numnovo=numnovo+subst(numero,conta,1)
         Endif
      Next
      ? numnovo // AQUI ESTÁ O NUMERO NOVO
      numero=0  // AQUI COMEÇA TUDO DE NOVO
    Endif
Enddo

Enviado: 01 Mai 2005 22:20
por Ricardo Sales Ribeiro
Amigo Toledo!

Deu certo em parte, esqueci de falar q tb pego um campo de quantidade, com 3 casas decimais ou seja

Tipo 18,000 numerica

18000 caractere

Da maneira q fiz, deu certinho para valores em dinheiro com 2 casas decimais, com a quantidade 18,000 gerou 1800.

Precisa de alguma modificação ?

Ricardo Sales

Enviado: 01 Mai 2005 23:28
por Toledo
Ricardo,

Note que no exemplo anterior eu multiplico o valor por 100 (nValor*100), que serve para valores com 2 casas decimais. Agora, para 3 casas decimais, você teria que multiplicar por 1000.

Exemplo:

Código: Selecionar todos

nValor:=18.000
cValor:=STR(nValor*1000,13,0)
Abraços,

Enviado: 02 Mai 2005 00:23
por ANDRIL
Ola Pessoal,

Para Valores:
nValor:=1852.33
cValor:=padl( strtran( ltrim(str(nValor,13,2)),"."), 13, "0")

Para Qtd:
nQtd:=18.000
cQtd:=padl( strtran( ltrim(str(nValor,13,3)),"."), 13, "0")

** Apenas para mostrar o grande leque de possibilidade do nosso Clipper.**


Abracos