PROBLEMA COM SOMA DE VALORES EM DATAGRID

GABSC 28/04/2012 22:07:47
#400977
Estou fazendo um projeto em VB 2010 e estou tendo bastante problema para somar valores de uma coluna no datagrid.

é um formulário de venda onde ao clicar no botão é adicionado o produto,valor unitário,quantidade e sub total.
Queria somar os valores da coluna sub total e aparecer numa label.

Utilizei os seguintes códigos:
Código 1
[txt-color=#0000f0]total = Val(ven_qtd.Text) * Val(PRECO_UN.Text)

DataGridView1.Rows.Add(ven_titulo.Text, [Ô]R$ [Ô] & PRECO_UN.Text & [Ô] X[Ô], ven_qtd.Text, [Ô]R$ [Ô] & Format(total, [Ô]0.00[Ô]))
For I As Integer = 0 To DataGridView1.Rows.Count - 1

valor = valor + Val(DataGridView1.Rows(I).Cells(4).Value)
Next
Me.LBPrecoTotal.Text = Format(valor, [Ô]0.00[Ô])

End If[/txt-color]

CÓDIGO 2
[txt-color=#0000f0]
DataGridView1.Rows.Add(, ven_titulo.Text, [Ô]R$ [Ô] & PRECO_UN.Text & [Ô] X[Ô], ven_qtd.Text, [Ô]R$ [Ô] & Format(tot, [Ô]0.00[Ô]))

For Each ROW As DataGridViewRow In Me.DataGridView1.Rows
If Not ROW.IsNewRow Then
valor += ROW.Cells(4).Value
End If
Next
LBPrecototal.text=format(valor,[Ô]0.00[Ô])[/txt-color]


Os dois códigos fazem a soma e aparece normalmente na label,porém o valor da soma está errado,o é somado o valor dobrado,depois triplicado acho que vai somando os valores já somados de novo! Gostaria que me ajudassem a resolver esse problema! Obrigada
ROBIU 29/04/2012 07:06:15
#400980
Resposta escolhida
E onde está declarada esta variável [Ô]valor[Ô]? O que acontece é que depois de passar o valor para a label, a váriável mantem o valor que é somado quando você executa o código novamente.
Declara dentro do código:
Dim valor As Double = 0
total = Val(ven_qtd.Text) * Val(PRECO_UN.Text)

DataGridView1.Rows.Add(ven_titulo.Text, [Ô]R$ [Ô] & PRECO_UN.Text & [Ô] X[Ô], ven_qtd.Text, [Ô]R$ [Ô] & Format(total, [Ô]0.00[Ô]))
For I As Integer = 0 To DataGridView1.Rows.Count - 1

valor = valor + Val(DataGridView1.Rows(I).Cells(4).Value)
Next
Me.LBPrecoTotal.Text = Format(valor, [Ô]0.00[Ô])

End If


Ou zera a variável antes de fazer o cálculo

DataGridView1.Rows.Add(, ven_titulo.Text, [Ô]R$ [Ô] & PRECO_UN.Text & [Ô]   X[Ô], ven_qtd.Text, [Ô]R$ [Ô] & Format(tot, [Ô]0.00[Ô]))
valor=0
For Each ROW As DataGridViewRow In Me.DataGridView1.Rows
If Not ROW.IsNewRow Then
valor += ROW.Cells(4).Value
End If
Next
LBPrecototal.text=format(valor,[Ô]0.00[Ô])
GABSC 30/04/2012 00:46:08
#401027
Muito obrigada!
Funcionou direitinho
Tópico encerrado , respostas não são mais permitidas