Получить сумму столбца в datagridview

У меня есть данные в столбце представления сетки данных

dgvAccDetail.Rows (i) .Cells (3) .Value = dtVD.Rows (i) .Item («ДЕБЕТ»). ToString.Trim

теперь мне нужно получить сумму столбца «ДЕБЕТ», для этого ...

        Dim tot As Integer = 0

             For i As Integer = 0 To dgvAccDetail.RowCount - 1
            tot += dgvAccDetail.Rows(i).Cells(4).Value

        Next
        If tot = 0 Then
            MessageBox.Show("No Records Found")
        End If

        TXTVoucherDTotal.Text = tot.ToString()

но я получил сообщение

"преобразование из строки в тип double недопустимо"

пожалуйста, скажите мне, что не так с этим кодом,

Какой у вас источник данных? Это дата?

F0r3v3r-A-N00b 23.07.2018 15:03
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
1
1
51
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

вы пытаетесь добавить строковое значение к целочисленному значению. dgvAccDetail.Rows(i).Cells(4).Value возвращает строку. Вы можете разобрать его до целого числа:

tot += Integer.Parse(dgvAccDetail.Rows(i).Cells(4).Value)

спасибо за ответ, теперь я получил другое сообщение "Входная строка была в неправильном формате"

Ejaz Sarwar 23.07.2018 10:12

Какое значение у строки?

Hagai Wild 23.07.2018 11:10

это 600 --- dgvAccDetail.Rows (i) .Cells (3) .Value = dtVD.Rows (i) .Item ("DEBIT"). ToString.Trim

Ejaz Sarwar 23.07.2018 11:39

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

 For i = 0 To dgvAccDetail.RowCount - 1
        tot += Cint(dgvAccDetail(4, i).Value)
 Next
Ответ принят как подходящий

Во-первых, включите Option strict, это поможет вам избежать многих ошибок в будущем. Если параметр строго выключен, компилятор должен определять типы данных, и поэтому ваши вычисления не будут работать.

Во-вторых, измените эту строку:

dgvAccDetail.Rows(i).Cells(3).Value = dtVD.Rows(i).Item("DEBIT").ToString.Trim 
'This line doesn't compile with option strict on

К

dgvAccDetail.Rows(i).Cells(3).Value = dtVD.Rows(i).Cells("DEBIT").Value()

Наконец, вы пытаетесь выполнять математические операции с текстом, вам нужно сначала преобразовать значение ячейки в правильный формат.

If dgvAccDetail.rows.count > 0

     Dim tot As double = 0 'integer will only work for whole numbers.
                           'It will disregard fractional values if set to integer.

        For i As Integer = 0 To dgvAccDetail.Rows.Count - 1
            tot = tot + Cdbl(dgvAccDetail.Rows(i).Cells(4).Value)

        Next

    TXTVoucherDTotal.Text = Format(tot,"0.00")

Else

    MessageBox.Show("No Records Found")

End If

Вычислительный метод DataTable принимает 2 строки; выражение и фильтр. Используйте соответствующий столбец в DataTable.

 Dim columnSum As Integer = CInt(dtVD.Compute("Sum(DEBIT)", Nothing))

Другие вопросы по теме