2014-05-25 1 views
-3

-Как я получаю сумму totalPrice в моем DataGridView из MySQLкак я всего на сумму от DataGridView vb.net

ProductName   Qty. Price totalPrice 
2 Pcs. Chickenjoy  5  59   295 
2 Pcs. Chickenjoy  1  69   69 
2 Pcs. Chickenjoy  1  69   59 

            TOTAL?? 

-The сумма должна быть 423 проблема в том, что удвоит сумму

-Вот мой код:

Try 
    'declaring variable as integer to store the value of the total rows in the datagridview 

    Dim max As Integer = DataGridView1.Rows.Count - 1 
    Dim total As String = "Total ----------->" 
    'getting the values of a specific rows 


    For Each row As DataGridViewRow In DataGridView1.Rows 
     'formula for adding the values in the rows 
     DataGridView1.Rows(max).Cells(4).Value += row.Cells(4).Value 
     DataGridView1.Rows(max).Cells(3).Value = total 
    Next 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 

Скриншоты http://goo.gl/Ufj53b

+0

установить точку останова и посмотреть, как выполнить код. вы узнаете много о разнице между тем, что, по вашему мнению, будет делать код и что он на самом деле делает И научиться использовать отладчик – Plutonix

ответ

0

Ваша основная проблема заключается в использовании цикла For Each. Когда он достигает последней строки, он добавляет накопленную сумму к себе. A Для цикла только второй последней строке должно работать:

Try 
    'declaring variable as integer to store the value of the total rows in the datagridview 

    Dim max As Integer = DataGridView1.Rows.Count - 1 
    'getting the values of a specific rows 
    DataGridView1.Rows(max).Cells(3).Value = "Total ----------->" 

    For I = 0 To DataGridView1.Rows.Count - 2 
     'formula for adding the values in the rows 
     DataGridView1.Rows(max).Cells(4).Value += DataGridView1.Rows(I).Cells(4).Value 
    Next 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 
+0

большое спасибо вам sir @tinstaafl последний вопрос и помощь как отправить сумму в текстовое поле1 .text from datagridview, im sorry im new в datagridview. – LordWelhimNoob

0

Попробуйте это:

Dim tot As Integer 
For Each row As DataGridViewRow In DataGridView1.Rows 
    'formula for adding the values in the rows 
    tot += row.Cells(4).Value 
Next 
DataGridView1.Rows(max).Cells(3).Value = total 
DataGridView1.Rows(max).Cells(4).Value = tot 
0

ваш цикл имеет ошибку. потому что он посчитает сумму 295,69 и 59, затем добавленную к сумме снова. вот почему он удвоит сумму. попробуйте это

Try 
    'declaring variable as integer to store the value of the total rows in the datagridview 

    Dim max As Integer = DataGridView1.Rows.Count - 1 
    Dim total As String = "Total ----------->" 
    Dim tot as integer =0 
    'getting the values of a specific rows 


    For Each row As DataGridViewRow In DataGridView1.Rows 
     'formula for adding the values in the rows 
     tot += row.Cells(4).Value 
    Next 
    DataGridView1.Rows(max).Cells(4).Value += tot 
     DataGridView1.Rows(max).Cells(3).Value = total 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try