Ir para conteúdo

POWERED BY:

Arquivado

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

nadito

total = total + quant * preco

Recommended Posts

Olá Pessoal,Estou com um problema que esporadicamente a minha soma de um total que é gerado em um Loop da um valor nada haver com o valor real.Uso o seguinte:While Not RS.EOFsubtotal = subtotal + RS("quantidade") * Preco_descontoRS.MoveNextWendTentei usar o seguinte mas nao sei se adiantarásubtotal = subtotal + RS("quantidade") * CDbl(Preco_desconto)Grato!Leonardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há erro, o que acontece é o seguintea soma dos produtos seriam 60 reais aonde esse Loop somou 78Mas tem o porem, não é sempre que acontece, de 50 em 50 registros apenas 2 da esse erro...é meio estranho...Valeu Meirelles

Compartilhar este post


Link para o post
Compartilhar em outros sites

num sei de nada, mas vamu lá

 

ASP

[*]do while not rs.eof

 

[*]valor rs("campo")

 

[*]desconto rs("campo2")

 

[*]

 

[*]total = total + valor

 

[*]

 

[*]sobtotal = (total * desconto)

 

[*]

 

[*]rs.movenext

 

[*]loop

 

[*]response.write "Valor total:" & total & "<br>"

 

[*]response.write "Valor total com desconto:" & subtotal

 

sei naum heim, mas tenta lá

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Meirelles,Pois é, da na mesma, mas seguinte...Desconfio que seja algum erro de calculo, ao calcular dados cdbl com int, talvez seja ai algum erro de dizima, ou sei lá...se alguem pudesse me ajudar, esso erro acontece apenas em alguns casos...uma veze eu tinha lifo sobre isso, mas não sie aonde, que ocorrem erros nas equações dependendo do caso, mesmo que elas estejam logicamente certas... era a questão de tratamento de variaveis... mas não acho isso...se saber de alguma me aviseabrsLeonardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente você não deve usar Cint e sim Cdblde onde vem Preco_desconto???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mario,preco_desconto vem do campo preco da tabela de produtosseria um valor como 20,34coloquei minha equação assimsubtotal = subtotal + RS("quantidade") * CDbl(Preco_desconto)estava apenas assim sem CDBlsubtotal = subtotal + RS("quantidade") * Preco_descontovamos ver agora se para os erros de calculose tiver algum argumento que me explique esse problemaagradeçoLeonardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas este preco desconto é fixo pra todos os registros???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mario,

 

sempre é um valor float, mas o valor diferente a cada registro

veja:

 

ASP

[*]

 

[*]SQL "SELECT tblPedido_Item.*, tblProdutos.no_prod, tblProdutos.preco_unitario, tblProdutos.ref_int, " &_

 

[*] "tblProdutos.data_desconto, tblProdutos.desconto, tblProdutos.preco_desconto " &_

 

[*] "FROM tblPedido_Item INNER JOIN tblProdutos ON " &_

 

[*] "tblPedido_Item.co_prod = tblProdutos.co_prod " &_

 

[*] "WHERE co_pedido =" & Session("co_pedido")

 

[*]RS.Open SQL, Conexao

 

[*]

 

[*]RS.MoveFirst

 

[*]subtotal = 0

 

[*]

 

[*]While Not RS.EOF

 

[*]If RS("data_desconto") > now() then

 

[*]Preco_desconto RS("preco_desconto")

 

[*]Else

 

[*]Preco_desconto RS("preco_unitario")

 

[*]End If

 

[*]

 

[*]Response.Write ("<tr><td>" & RS("no_prod") & "</td>")

 

[*]Response.Write ("<td>" & FormatCurrency(Preco_desconto) & "</td>")

 

[*]Response.Write ("<td>" & RS("quantidade") & "</td>")

 

[*]Response.Write ("<td>" & FormatCurrency(RS("quantidade") * Preco_desconto) & "</td></tr>")

 

[*]

 

[*]RS("preco_item"FormatNumber(Preco_desconto) * 1

 

[*]RS.Update

 

[*]

 

[*]subtotal = subtotal + RS("quantidade") * CDbl(Preco_desconto)

 

[*]

 

[*]RS.MoveNext

 

[*]

 

[*]Wend

 

[*]RS.Close

 

[*]

 

[*]subtotal CDbl(subtotal)

 

[*]

 

[*]' ** Agora grava e mostra o subtotal

 

[*]SQL "SELECT * FROM tblPedidos WHERE co_pedido =" & Session("co_pedido")

 

[*]RS.Open SQL, Conexao, , 3

 

[*]RS("subtotal"FormatNumber(subtotal) * 1

 

[*]RS.Update

 

[*]

 

[*]Response.Write FormatCurrency(subtotal)

 

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, avaliem comigo o fragmento do código:

 

subtotal = subtotal + RS("quantidade") * Preco_desconto

Do jeito que está formatado o compilador irá, pela ordem das operações aritiméticas, fazer primeiro a multiplicação e depois a soma.

 

Troque o código por este se você quiser que soma aconteça primeiro:

 

subtotal = (subtotal + RS("quantidade")) * Preco_desconto

Veja se resolve agora.

 

[]'s

 

B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, avaliem comigo o fragmento do código:

 

subtotal = subtotal + RS("quantidade") * Preco_desconto
Do jeito que está formatado o compilador irá, pela ordem das operações aritiméticas, fazer primeiro a multiplicação e depois a soma.

 

Troque o código por este se você quiser que soma aconteça primeiro:

 

subtotal = (subtotal + RS("quantidade")) * Preco_desconto
Veja se resolve agora.

 

[]'s

 

B)

<{POST_SNAPBACK}>

Perfeito !

Compartilhar este post


Link para o post
Compartilhar em outros sites

FormatNumber precisa passar o numero de casas decimais

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu galera, agora é esperar e ver se para o erro de calculo

http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

ok tiozinho qualquer coisa grita

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.