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

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

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

Mensagem 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
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Mensagem por Ricardo Sales Ribeiro »

Amigo Toledo
Boa Noite


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


Ricardo Sales :xau
gavel
Usuário Nível 1
Usuário Nível 1
Mensagens: 39
Registrado em: 16 Mar 2005 07:30

Transformar numero em texto.

Mensagem 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
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Mensagem 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
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem 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
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder