FUN?ÃO SUM MYSQL
Fala galera blz. Estou fazendo um relatório de vendas e estou usando a função SUM para somar os campos mas acontece que o valor de moedas quando da centavos tipo 36,50 ou 36,80 ele retorna so 36,00 o campo na tabela esta como VarChar tamanho 30 que esta errado estou usando assim:
strSQL = [Ô]Select NomedoCliente,CodigodeBarra,NomedoProduto,ValorUnitario,DatadoCaixa,ValordeCompra, SUM(Quantidade),SUM(ValorTotaldeCompra),SUM(ValorTotal) FROM itens_pedidos_vendas Where Usuario=[ô][Ô] & strUsuario & [Ô][ô]and Caixa=[ô][Ô] & [Ô]Aberto[Ô] & [Ô][ô]Group by CodigodeBarra[Ô]
exemplo: se tenho 5 produtos valor 1,95 daria 9,75 ele retorna 9,00. Será que e o tipo de campo da tabela? Se alguém puder me ajudar agradeço.
strSQL = [Ô]Select NomedoCliente,CodigodeBarra,NomedoProduto,ValorUnitario,DatadoCaixa,ValordeCompra, SUM(Quantidade),SUM(ValorTotaldeCompra),SUM(ValorTotal) FROM itens_pedidos_vendas Where Usuario=[ô][Ô] & strUsuario & [Ô][ô]and Caixa=[ô][Ô] & [Ô]Aberto[Ô] & [Ô][ô]Group by CodigodeBarra[Ô]
exemplo: se tenho 5 produtos valor 1,95 daria 9,75 ele retorna 9,00. Será que e o tipo de campo da tabela? Se alguém puder me ajudar agradeço.
Troque o campo de varchar pra double
ACCIOLLY Valeu pela resposta, mas ele ficou assim: 1,95 ficou 195. Qual o tamanho do decimal? Para exibir eu formatei assim: Format(Tb(5), [Ô]R$ ###,##0.00[Ô]) e mesmo assim ficou R$ 195,00 e era pra ser R$ 1,95
Use a função FormatNumber. Crie uma variável do tipo double e passe o valor recuperado do banco pra ela. A codificação abaixo testei no VBA do meu word e funfou direitin!
Vai ser mostrado 25,00. Se for 25.65 vai ser mostrado 25,65. O que acontece é que o 2 no segundo parametro é a quantidade de casas decimais depois da vÃrgula
Dim n As Double
n = 25
MsgBox FormatNumber(n, 2)
Vai ser mostrado 25,00. Se for 25.65 vai ser mostrado 25,65. O que acontece é que o 2 no segundo parametro é a quantidade de casas decimais depois da vÃrgula
O Mysql ja faz isso, não use double use decimal a sua precisão é maior
um decimal 10,2 resolve seu problema
um decimal 10,2 resolve seu problema
Mais uma vez obrigado pelas respostas. mas o problema e a virgula o sistema grava no db sempre com virgula vou ver o que consigo fazer. não entendo e porque a função SUM so soma certo com double.
Galera valeu pelas resposta mas consegui resolver. ficou assim:
strSQL = [Ô]Select NomedoCliente,CodigodeBarra,NomedoProduto,ValorUnitario,DatadoCaixa,ValordeCompra, SUM(Quantidade),SUM(CAST(REPLACE(ValorTotaldeCompra,[ô],[ô],[ô].[ô])as DECIMAL(18,2)) ),SUM(CAST(REPLACE(ValorTotal,[ô],[ô],[ô].[ô])as DECIMAL(18,2)) ) FROM itens_pedidos_vendas Where Usuario=[ô][Ô] & strUsuario & [Ô][ô]and Caixa=[ô][Ô] & [Ô]Aberto[Ô] & [Ô][ô]Group by CodigodeBarra[Ô]
o campo mysql ficou como varchar mesmo.
Abraços.
strSQL = [Ô]Select NomedoCliente,CodigodeBarra,NomedoProduto,ValorUnitario,DatadoCaixa,ValordeCompra, SUM(Quantidade),SUM(CAST(REPLACE(ValorTotaldeCompra,[ô],[ô],[ô].[ô])as DECIMAL(18,2)) ),SUM(CAST(REPLACE(ValorTotal,[ô],[ô],[ô].[ô])as DECIMAL(18,2)) ) FROM itens_pedidos_vendas Where Usuario=[ô][Ô] & strUsuario & [Ô][ô]and Caixa=[ô][Ô] & [Ô]Aberto[Ô] & [Ô][ô]Group by CodigodeBarra[Ô]
o campo mysql ficou como varchar mesmo.
Abraços.
Tópico encerrado , respostas não são mais permitidas