Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vitorlouzada

SUM() soma errado...

Recommended Posts

Bom dia...

 

estou tendo muitas dificuldades aqui para criar um extrato financeiro no meu sistema..

 

A estratura está toda pronta... possui os campos débito e crédito, tudo certim... o meu problema é na hora de efeturar a soma dos débitos e a soma dos créditos para gerar o saldo.

 

Para lançar os dados no sistema eu utilizo um script em javascript que ele muda o formato da moeda... tipo se eu eu digitar 3500 ele formata para 3.500,00 e insere para o bd...

 

só que na hora de fazer a soma pelo SUM() ele não pega 3.500,00 e sim 3.5 (três reais e cinco centavos) o que faz que o rwesultado fique todo errado...

 

 

o que vocês me sugerem a fazer?

 

Detalhe importante: Já tem mais 500 registros lançados no sistema de débito e crédito... não tem como eu começar do zero...

 

esse extrato deveria ser implantado no sistema...

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse campo é texto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa pergunta, pois se esse campo for texto, troque para o de Moeda e faça função para adicionar as casas decimais corretas

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for um campo numerico nao era para estar tendo este tipo de problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha amigo, eu faria do jeito mais simples e, creio eu, mais facil...

usaria o REPLACE pra substituir o "." e ","

depois o CInt pra transformar em inteiro e poder somar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque double e não bote limite de valores e antes de cadastrar faça o replace que:

ex: 1.435,25

 

substitua o ponto por vazio e depois outro replace substituindo a vírgula por ponto, mais só quando for enviar para o banco, quando form mostrar use o format number, assim:

 

para cadastrar no banco:

Valor = "1.435,25"

Valor = Replace(Valor, ".", "")
Valor = Replace(Valor, ",", ".")

para apresentar na tela:

<% Response.Write(FormatNumber(RS("Valor"), 2)) %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso ocorre o erro, use sempre um campo numerico para armazenar numeros

 

a forma com que deve aparecer ao usuario voce pode e deve fazer apenas na pagina de visualização

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia pessoal, desculpe pela demora em responder ao tópico.

 

Muito obrigado pelas dicas de vocês...

 

Mais tem um detalhe, já possuo mais de 800 lançamentos no formato nacional e o campo como varchar, será que se eu mudar o campo da tabela para um formato numérico, irá danificar os números?

 

E no caso para se trabalhar com moeda, qual seria a melhor opção para o campo no mysql??

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah pessoal u ainda sou meio leigo, lendo melhor a postagem dos amigos acima...

 

o Cint deveria ser utilizado direto na hora de apresentar o número? ou na string sql?

 

E o campo Double que é o campo ideal quando se trata de moeda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

para armazenar moeda voce pode usar o double sim ou qualquer outro tipode de dados que tenha casas decimais

 

nao sei se tem um tipo especifico para moeda mas nao faz mal desde que use campos numericos

 

voce terá trabalho mas precisará realmente substituir o que ta armazenado como texto para numerico mas pode fazer tudo isso via codigo mesmo

 

crie um novo campo e converta o que ta armazenado para numero e armazene no novo campo

 

quando terminar exclua o campo anterior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já estou fazendo a conversão, está dando certo... o porém que parece que todos os números que tinha , ... se tornaram inteiros...

 

Agora um detalhe que não estou conseguindo aqui, é referente ao Replace, na hora de inserir...

 

estou utilizando da seguinte forma, igual ao que o Ted ensinou:

 

O Replace:

 

Valor = Replace(Valor, ".", "")

Valor = Replace(Valor, ",", ".")

 

A linha de inserção no bd

 

If objRS.Fields("valor").properties("IsAutoIncrement") = False Then

objRS("valor") = Trim(Replace(Request.Form("valor")))

End If

 

Só que tá dando erro falando que o replace não é válido...

 

Como faço para consertar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa..

 

Consegui fazer o replace... tinha feito um detalhe errado...

 

estava fazendo...

 

O Replace:

 

Valor = Replace(Valor, ".", "")

Valor = Replace(Valor, ",", ".")

 

A linha de inserção no bd

 

If objRS.Fields("valor").properties("IsAutoIncrement") = False Then

objRS("valor") = Trim(Replace(Request.Form("valor")))

End If

 

 

o correto ficou:

 

Valor = Request.Form("valor")

Valor = Replace(Valor, ".", "")

Valor = Replace(Valor, ",", ".")

 

If objRS.Fields("valor").properties("IsAutoIncrement") = False Then

objRS("valor") = valor

End If

 

 

Muito obrigado pela ajuda de vocês, estou me ajudando a resolver um problemão!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.